Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 21:41

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Пн янв 24, 2011 13:58 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
удивил Кварк - при его постоянном прорисовывании экрана и ещё неизвестно, что там внутри происходит

Экран прорисовывается только в цикле ожидания ввода от пользователя. Как только что-то запускается на исполнение, отрисовка прекращается, хотя может быть принудительно вызвана словом REDRAW. А внутри ничего особенного не происходит - скомпилированы последовательности call, ну и часть кода в виде шаблонов. Собственно, шаблоны я могу показать в теме кварка.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Пн янв 24, 2011 18:31 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
вопрос писал(а):
удивил Кварк - при его постоянном прорисовывании экрана и ещё неизвестно, что там внутри происходит

Экран прорисовывается только в цикле ожидания ввода от пользователя. Как только что-то запускается на исполнение, отрисовка прекращается
Даже весьма простой генератор Сатурна (где-то в задачах) у меня заметно замедлялся, хотя там прорисовывается прямоугольник только вокруг планеты (довольно небольшой), но замедление говорит о том. что прорисовываться продолжал весь экран

Хищник писал(а):
А внутри ничего особенного не происходит - скомпилированы последовательности call, ну и часть кода в виде шаблонов. Собственно, шаблоны я могу показать в теме кварка.
Да, хотелось бы посмотреть


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Вс фев 27, 2011 13:18 
Положили переменные на стек, получили достоинство - программисту не надо
придумывать переменным имена. Сняли переменные со стека, получили
достоинство - программисту не надо помнить, что лежит на стеке.
Вот бы теперь эти достоинства объединить !


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Вс фев 27, 2011 14:23 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Гость писал(а):
Положили переменные на стек, получили достоинство - программисту не надо
придумывать переменным имена. Сняли переменные со стека, получили
достоинство - программисту не надо помнить, что лежит на стеке.
Вот бы теперь эти достоинства объединить !

Именованные локальные переменные.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Чт мар 03, 2011 15:29 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Гость писал(а):
программисту не надо помнить, что лежит на стеке
Дело не столько в том чтобы помнить, а в том что перетасовка на стеке нескольких аргументов становится неудобной да и производительность уменьшается. Кстати Хищник не упомянул про свой FRAME{ .... }FRAME (поскромничал?)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Чт мар 03, 2011 22:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_Harry писал(а):
Дело не столько в том чтобы помнить, а в том что перетасовка на стеке нескольких аргументов становится неудобной да и производительность уменьшается.

А зачем же тасовать? Это не самоцель, при определенном навыке работы с Фортом аргументы размещаются в правильном порядке, и жонглирование сведено к минимуму.
_Harry писал(а):
Кстати Хищник не упомянул про свой FRAME{ .... }FRAME (поскромничал?)

Это же не единственное решение, и не первое в истории.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Пт мар 04, 2011 15:19 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Хищник писал(а):
жонглирование сведено к минимуму.
Ага особенно при работе с WinApi OpenGL и т.п.
Как то афтары сишных библиотек не очень заботятся о том чтобы аргументы в стеке лежали в нужном порядке.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Пт мар 04, 2011 15:42 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_Harry писал(а):
Хищник писал(а):
жонглирование сведено к минимуму.
Ага особенно при работе с WinApi OpenGL и т.п.

Там ведь нет особого жонглирования, если понимать под ним не просто "сборку" параметров на стеке, а интенсивные перестановки. Если функции надо x, y, z, то так и пишем - X Y Z FUNC, а не пытаемся сначала все перепутать, а потом разными SWAP ROT и PICK поставить все, как надо. Это уже мазохизм какой-то под маской "оптимизации стековых операций".

Вот ради интереса посмотрел свою программу и аналогичную своего коллеги (разные реализации одной и той же задачи). На примерно 1000 строк у него 66 раз упоминается SWAP, у меня - 22. ROT - 0 и 1 раз соответственно. Выводы?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Сб мар 05, 2011 00:16 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Хищник писал(а):
Если функции надо x, y, z, то так и пишем - X Y Z FUNC, а не пытаемся сначала все перепутать, а потом разными SWAP ROT и PICK поставить все, как надо. Это уже мазохизм какой-то под маской "оптимизации стековых операций".

А что значит "функции надо"?
Мне видятся как минимум три критерия при выборе порядка:
1. Как проще запомнить (по аналогии с уже написанным, например).
2. Как оптимальнее для кода функции (который еще предстоит написать, кстати).
3. Как удобнее для известных точек вызова (call site arg specialization).
В современных нефортах афтор учитывает (1), а компилятор решает проблемы (2) и (3). :mrgreen:
А Вы какой из критериев предпочитаете?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Сб мар 05, 2011 00:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
dynamic-wind писал(а):
А что значит "функции надо"?

Речь же шла о "WinAPI, OpenGL". У них уже определены интерфейсы. Сделать так, чтобы аргументы попадали на стек в правильном порядке - вопрос практических навыков программирования.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Сб мар 05, 2011 00:48 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Хищник писал(а):
Речь же шла о "WinAPI, OpenGL". У них уже определены интерфейсы. Сделать так, чтобы аргументы попадали на стек в правильном порядке - вопрос практических навыков программирования.

А, тогда понятно. Для фортера это должно быть плёвое дело. Особенно если разрешить PICK и локальные переменные.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Сб мар 05, 2011 01:12 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
dynamic-wind писал(а):
А, тогда понятно. Для фортера это должно быть плёвое дело. Особенно если разрешить PICK и локальные переменные.

Так вот же выше я писал - у меня в среднем один SWAP на 50 строк текста. PICK и локальные переменные весьма эпизодически, при реализации слов, которые по смыслу обязаны оперировать большим количеством аргументов. Например, нарисовать прямоугольную рамку с левым верхним углом в X, Y, размерами W, H и цветом Color. Тут, как ни крути, на стеке должны лежать все эти параметры.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Сб мар 05, 2011 02:31 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Хищник писал(а):
Так вот же выше я писал - у меня в среднем один SWAP на 50 строк текста

Показать исходник не хотите ли? :wink:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Сб мар 05, 2011 02:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
dynamic-wind писал(а):
Хищник писал(а):
Так вот же выше я писал - у меня в среднем один SWAP на 50 строк текста

Показать исходник не хотите ли?

Сильно не доделан :shuffle; Это набросок GUI, в разделе Quark есть скриншоты.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Сб мар 05, 2011 17:04 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Хищник писал(а):
меня - 22. ROT - 0 и 1 раз соответственно. Выводы?
Видимо "...опыт не пропьёшь" :?:
Проблема в том что оптимизации расположения на стеке большого количества параметров задача изрядно напрягающая :^) програмиста и при этом не имеющая непосредственного отношения к алгоритму.
Так вот и хочется поменьше напрягаться. Хотя решений этого вопроса уже много имеется но как то все не впечатляет :roll:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB