Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср июн 29, 2016 11:14

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Самая простая оптимизация?
Автор Сообщение
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
WingLion писал(а):
A@ B@ + C! что здесь оптимизровать?
Ответил в другой теме
Сообщение Добавлено: Пт апр 27, 2012 09:08
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
Код:
<slot> flag status </slot>
\ -->
\ _flag flag! flag
\ _status status! status

10 status!  _status @  status  =  \ --> TRUE
Сообщение Добавлено: Пт апр 27, 2012 06:02
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
WingLion писал(а):
"соптимизорвать" бы определение переменной так, чтобы кроме основного имени появлялись бы и имена с суфиксами @ и !

А я использую slot, который для каждого заданного name создает слова (с именами без кавычек):
"_{name}" ( -- addr ) \ адрес ячейки памяти (редко используется)
"{name}" ( -- x ) \ возвращает значение x из ячейки памяти addr
"{name}!" ( x -- ) \ записывает значение x в add
Сообщение Добавлено: Пт апр 27, 2012 05:39
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
A еще, козявки по столу размазывать нехорошо. (с)...

A@ B@ + C! что здесь оптимизровать?

@ @ и ! переместить в + ?

А если надо константу прибавить или непосредственное число?

A@ B@ * C@ + D! - тут промежуточное данное в память и незачем сохранять.

"соптимизорвать" бы определение переменной так, чтобы кроме основного имени появлялись бы и имена с суфиксами @ и !
Сообщение Добавлено: Пт апр 27, 2012 04:55
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
_Harry писал(а):
Так вот и хочется поменьше напрягаться. Хотя решений этого вопроса уже много имеется но как то все не впечатляет

Да не особо. Просто надо правильно проектировать код.
Т.е. подход к программе на форте с точки зрения того, кто что кому передает.
Так называемые диаграммы передачи данных. Грубо говоря, код пишется сразу и сверху вниз и снизу вверх, и основной этап - планирование интерфейсов, а не алгоритмов.
Сообщение Добавлено: Сб мар 05, 2011 18:30
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
Хищник писал(а):
меня - 22. ROT - 0 и 1 раз соответственно. Выводы?
Видимо "...опыт не пропьёшь" :?:
Проблема в том что оптимизации расположения на стеке большого количества параметров задача изрядно напрягающая :^) програмиста и при этом не имеющая непосредственного отношения к алгоритму.
Так вот и хочется поменьше напрягаться. Хотя решений этого вопроса уже много имеется но как то все не впечатляет :roll:
Сообщение Добавлено: Сб мар 05, 2011 17:04
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
dynamic-wind писал(а):
Хищник писал(а):
Так вот же выше я писал - у меня в среднем один SWAP на 50 строк текста

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

Сильно не доделан :shuffle; Это набросок GUI, в разделе Quark есть скриншоты.
Сообщение Добавлено: Сб мар 05, 2011 02:37
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
Хищник писал(а):
Так вот же выше я писал - у меня в среднем один SWAP на 50 строк текста

Показать исходник не хотите ли? :wink:
Сообщение Добавлено: Сб мар 05, 2011 02:31
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
dynamic-wind писал(а):
А, тогда понятно. Для фортера это должно быть плёвое дело. Особенно если разрешить PICK и локальные переменные.

Так вот же выше я писал - у меня в среднем один SWAP на 50 строк текста. PICK и локальные переменные весьма эпизодически, при реализации слов, которые по смыслу обязаны оперировать большим количеством аргументов. Например, нарисовать прямоугольную рамку с левым верхним углом в X, Y, размерами W, H и цветом Color. Тут, как ни крути, на стеке должны лежать все эти параметры.
Сообщение Добавлено: Сб мар 05, 2011 01:12
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
Хищник писал(а):
Речь же шла о "WinAPI, OpenGL". У них уже определены интерфейсы. Сделать так, чтобы аргументы попадали на стек в правильном порядке - вопрос практических навыков программирования.

А, тогда понятно. Для фортера это должно быть плёвое дело. Особенно если разрешить PICK и локальные переменные.
Сообщение Добавлено: Сб мар 05, 2011 00:48
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
dynamic-wind писал(а):
А что значит "функции надо"?

Речь же шла о "WinAPI, OpenGL". У них уже определены интерфейсы. Сделать так, чтобы аргументы попадали на стек в правильном порядке - вопрос практических навыков программирования.
Сообщение Добавлено: Сб мар 05, 2011 00:37
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
Хищник писал(а):
Если функции надо x, y, z, то так и пишем - X Y Z FUNC, а не пытаемся сначала все перепутать, а потом разными SWAP ROT и PICK поставить все, как надо. Это уже мазохизм какой-то под маской "оптимизации стековых операций".

А что значит "функции надо"?
Мне видятся как минимум три критерия при выборе порядка:
1. Как проще запомнить (по аналогии с уже написанным, например).
2. Как оптимальнее для кода функции (который еще предстоит написать, кстати).
3. Как удобнее для известных точек вызова (call site arg specialization).
В современных нефортах афтор учитывает (1), а компилятор решает проблемы (2) и (3). :mrgreen:
А Вы какой из критериев предпочитаете?
Сообщение Добавлено: Сб мар 05, 2011 00:16
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
_Harry писал(а):
Хищник писал(а):
жонглирование сведено к минимуму.
Ага особенно при работе с WinApi OpenGL и т.п.

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

Вот ради интереса посмотрел свою программу и аналогичную своего коллеги (разные реализации одной и той же задачи). На примерно 1000 строк у него 66 раз упоминается SWAP, у меня - 22. ROT - 0 и 1 раз соответственно. Выводы?
Сообщение Добавлено: Пт мар 04, 2011 15:42
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
Хищник писал(а):
жонглирование сведено к минимуму.
Ага особенно при работе с WinApi OpenGL и т.п.
Как то афтары сишных библиотек не очень заботятся о том чтобы аргументы в стеке лежали в нужном порядке.
Сообщение Добавлено: Пт мар 04, 2011 15:19
  Заголовок сообщения:  Re: Самая простая оптимизация?  Ответить с цитатой
_Harry писал(а):
Дело не столько в том чтобы помнить, а в том что перетасовка на стеке нескольких аргументов становится неудобной да и производительность уменьшается.

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

Это же не единственное решение, и не первое в истории.
Сообщение Добавлено: Чт мар 03, 2011 22:18

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


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