Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср апр 24, 2024 05:31

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

должна для форта включать в себя всего лишь следующее
1) все переменные получают имена и ассемблерно оптимизируется доступ до переменной с именем
2) на стеке нет никаких других переменных, кроме логических - результатов сравнений
и т.п.
3) над результатами логических действий возможны стековые операции для организации сложных ветвлений, циклов и т.п.
4) над данными производить какие-либо стековые операции компилятор отказывается, воспринимая как целое фразу, где присутствует присвоение. т.е. результат арифметических действий присваивается переменной


при этом для человека
1. исчезает необходимость помнить, что вперемешку лежит на стеке и вообще работу с адресами
2. все переменные приобретают имена

для оптимизатора
1. необходимо оптимизировать всего лишь обращение по адресу или по трём адресам с действием А В + С ! при этом восклицательный знак может играть роль маркера конца операции, а операции можно анализировать синтаксически, практически не усложняя интерпретатор
2. необходимо оптимизировать работу с массивами - т.е. обращение по "адресу с индексом"
3. Необходимо оптимизировать весьма ограниченное количество стековых операций с логическими результатами ( DUP IF будет означать условный переход. а не
(1) дублирование (2) условный переход (3) удаление со стека лишней переменной ;
OVER IF будет опять же означать условный переход, а не (1) увеличение указателя стека (2) перемещение на вершину стека копии второго элемента (3) условный переход (4) удаление с вершины стека элемента )
подобных переходов не так много - в пределах 16 штук
4. остаются под вопросом только результаты побитовых лoгических операций AND OR XOR
они могут использоваться и как данные и как логические переменные (основание для ветвлений) для них достаточно 1 (одной) операции помещения на стек, вместо присвоения, скажем, это может быть !!
Это значит, что если фраза заканчивается ! - результат рассматривается как арифметический и уходит в память, если !! - как логический и кладётся на стек


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
странно...
а мне казалось, что самая-простая-оптимизация - это:

Код:
' BYE TO MAIN SAVE-FORTH-SYSTEM forth.exe


Оптимальнее некуда.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
:shock: я же не предлагал ограничить функциональность форт-системы, а только стековые операции с данными заменить на операции с памятью, это позволяет самую, как кажется, даже переносимю оптимизацию на уровне ассемблера :
стековых операций остаётся очень немного - и поэтому можно все их (и даже их сочетания) прописать оптимально в ассемблере
и обращения к памяти в этом случае могут по максимально простому алгоритму оптимизироваться компилятором ИМНО


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Dragon book сразу посоветовать, или еще рано? :)


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
Dragon book сразу посоветовать, или еще рано? :)

обсуждаемое проще


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

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

Обсуждаемое является кусочками Dragon book. Собственно, уже не только ее, литературы по созданию компиляторов сейчас достаточно много.


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

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

Обсуждаемое является кусочками Dragon book. Собственно, уже не только ее, литературы по созданию компиляторов сейчас достаточно много.

Книг много
этот кусочек настолько очевиден. что не нуждается ни в какой книге


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

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

Однако очевидна ли актуальность вот именно этого кусочка?


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
нельзя ли перенести эту тему в тот раздел, где лежит моя статья?

1. просто - упрощается работа со стеком, добавляется наглядность, структура кода прозрачна как вода в стакане, уходят стек возвратов и т.п.
2. предельно ясно - всего два дополнительных (не переделывать а дополнить) структурных ограничения
3. предельно ясно, какова задача перед оптимизатором и как её реализовать (оптимизировать обращение к памяти сможет студент 1 курса)
4. экономно - образуется ограниченная числом группа операций, которую выгодно оптимизировать ассемблерно (логические операции + последующие переходы), можно реализовать даже в железе ввиду немногочисленности


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вопрос писал(а):
Вопрос таков - не кажется ли кому-то, что самая простая оптимизация в двух смыслах
1. читабельность и простота
2. скорость

непонятное выражение.
Обычно выбирать приходится между скоростью и объемом кода. То есть, пытаясь ускорить работу, мы вынуждены увеличивать размер кода, и наоборот, при уменьшении объема кода скорость выполнения падает.
?Что значит читабельность, как она относится к оптимизации-то!

вопрос писал(а):
должна для форта включать в себя всего лишь следующее
1) все переменные получают имена и ассемблерно оптимизируется доступ до переменной с именем

Собственно, попробовать вы можете так сделать и не только так. Давайте уже от генерации идей переходить к их реализации.

что же касается стека, то он как раз кеширует данные, то есть ускоряет работу.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вопрос писал(а):
1. просто - упрощается работа со стеком, добавляется наглядность, структура кода прозрачна как вода в стакане, уходят стек возвратов и т.п.
2. предельно ясно - всего два дополнительных (не переделывать а дополнить) структурных ограничения
3. предельно ясно, какова задача перед оптимизатором и как её реализовать (оптимизировать обращение к памяти сможет студент 1 курса)
4. экономно - образуется ограниченная числом группа операций, которую выгодно оптимизировать ассемблерно (логические операции + последующие переходы), можно реализовать даже в железе ввиду немногочисленности

если кастрировать кота, то он становится покладистым, не орет ночами, не метит углы, не бегает по кошкам, не дерется с соседними котами, мирно лежит у огня. Надо кастрировать всех котов - это смогут сделать даже студенты 1 курса.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur



За это сообщение автора mOleg поблагодарил: dynamic-wind
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самая простая оптимизация?
СообщениеДобавлено: Сб янв 01, 2011 19:11 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
:shock: :x :?: :roll:


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

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

Однобитовый стек? свежо и остроумно! Переменные тоже надо бы сделать однобитными. Представляете: можно обрабатывать числа любой разрядности бит за битом. А главное, просто!
:lol: :mrgreen: :twisted:


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

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Может лучше отимизировать парсер как в Mouse? И внутренюю структуру Форта (Например словарь: заменить список на хэш-таблицу)?


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
dynamic-wind писал(а):
Однобитовый стек? свежо и остроумно! Переменные тоже надо бы сделать однобитными. Представляете: можно обрабатывать числа любой разрядности бит за битом. А главное, просто!
:lol: :mrgreen: :twisted:

ЧТо за эмоции?


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

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


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

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


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

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