Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн янв 17, 2022 07:43

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: и еще про оптимизацию
СообщениеДобавлено: Чт авг 10, 2006 15:06 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
admin on: обсуждение перенесено из топика:
принимаю критику по поводу собственой деятельности
admin off:

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


Я пользуюсь. Чего такого?
Можно завесть сой стек и не один.
Код:
CREATE SS HERE 0x20 CELLS ALLOT  HERE SWAP !  \ STACK
0 , 0 ,

: >S  ( A -- )
-CELL  SS +! SS @ !  ;
:  S@ ( -- n )
    SS @ @   ;
: SDROP CELL SS +! ;

:  S> ( -- A )  [ SS @ LIT, ] @ SS @ =
ABORT" SS stack underflow"
   S@ SDROP ;


Цитата:

- глобальные переменные - зло (с) нипомню кто сказал, согласен полностью, особено переменная типа темп,


Они значительно повышают наглядность.
Есть некоторые затруднения при представлении фрагмента кода в виде
подпрограммы, если он содержит локальные переменные.
Еще может быть некоторая неоптимальность в использовании аппаратных средств.
Мои локальные переменные devel\~mak\locals1.f
в этом отношении лучше.
Мой оптимизатор, по моему, не плохо с ними разберается.

Чего еще?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 11, 2006 04:12 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5030
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 60 раз.
Mihail писал(а):
Они значительно повышают наглядность.


только в том случае, если их мало ( очень мало) и то последствия не гарантируются.
Mihail писал(а):
Мои локальные переменные devel\~mak\locals1.f
в этом отношении лучше.
Мой оптимизатор, по моему, не плохо с ними разберается.

Пользоваться локальными переменными во время изучения форта я бы не советовал, так как это крайняя мера, которая порождает достаточно неправильный код, конечно не обязательно, что он станет писать проги под форт-процессор, где не будет возможности реализовать локалсы, но все-таки.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 11, 2006 13:02 
oleg писал(а):
конечно не обязательно, что он станет писать проги под форт-процессор, где не будет возможности реализовать локалсы,

А с чего вдруг в Форт-процессоре нельзя будет реализовать локалсы? Это ведь инструмент компилятора - именованый стек - и к возможностям целевой платформы он имеет весьма далекое отношение...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 11, 2006 14:01 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
oleg писал(а):
станет писать проги под форт-процессор, где не будет возможности реализовать локалсы, но все-таки.


Поиммо стека возвратов и дополнительного стека REQUIRE >L ~profit/lib/lstack.f
в качестве локалсов можно использовать глобальные переменные общего
назначения(ГПОН) . Это обычные переменные, но требуют определенную дисциплину
использования. Любая функция должна оставить в нем старое значения.
На пример, временно сохранив это значение на стеке возвратов.
В общем типа регистров процессора. Собственно в качестве ГПОН могут
быть использованы POHы, по средствам функции чтения/записи конкретных POHов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 12, 2006 00:30 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5030
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 60 раз.
ArtemKAD писал(а):
А с чего вдруг в Форт-процессоре нельзя будет реализовать локалсы? Это ведь инструмент компилятора - именованый стек - и к возможностям целевой платформы он имеет весьма далекое отношение...


обычные процессоры могут рассматривать стек данных, как массив, либо вообще не давать к стеку доступ 8(
форт-процессоры обычно работают с чистыми стеками, доступ к данным в них не индексируется и можно брать только верхние элементы со стека.

Mihail писал(а):
Поиммо стека возвратов и дополнительного стека REQUIRE >L ~profit/lib/lstack.f
в качестве локалсов можно использовать глобальные переменные общего
назначения(ГПОН)

но это значительно дольше, чем одна две манипуляции со стеком :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 12, 2006 13:16 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
oleg писал(а):
Mihail писал(а):
Поиммо стека возвратов и дополнительного стека REQUIRE >L ~profit/lib/lstack.f
в качестве локалсов можно использовать глобальные переменные общего
назначения(ГПОН)

но это значительно дольше, чем одна две манипуляции со стеком :)


Оптимизатор соптимизирует.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 14, 2006 22:25 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5030
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 60 раз.
Mihail писал(а):
Оптимизатор соптимизирует.

ну и что? А если у человека не СПФ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 14, 2006 22:35 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7333
Благодарил (а): 21 раз.
Поблагодарили: 127 раз.
Mihail писал(а):
Оптимизатор соптимизирует.


Оптимизатор не сможет прыгнуть выше головы. "Оптимально" - не означает "очень быстро". Это просто некий экстремум функционала качества, причем далеко не факт, что глобальный. Мало того, что оптимизатор может просто не найти решения, приемлемого по эффективности, его может просто не быть исходя из постановки задачи. А постановкой задачи в данном случае заведует стиль программирования. Если я расположу стек в пространстве ввода-вывода, то никакой оптимизатор не сможет превратить набор команд in и out в команды обращения к памяти. Да еще, возможно, с value tracking.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 11:41 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
oleg писал(а):
Mihail писал(а):
Оптимизатор соптимизирует.

ну и что? А если у человека не СПФ?


Нужно создать только ассемблер, дизассемблер и ЦК
с подпрограммным шитым кодом.
Оптимизатор я добавлю и выставлю на распространение
(насыщение, по началу, будет слабое).
Только секреты хранить не буду.

Вообще, оптимизатор прост, как электровеник.


Последний раз редактировалось Mihail Вт авг 15, 2006 19:19, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 11:52 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Хищник писал(а):
Mihail писал(а):
Оптимизатор соптимизирует.


Оптимизатор не сможет прыгнуть выше головы.


Речь шла о использовании дополнительного программного стека.
Оптимизатор с этим может разобраться.

Цитата:
"Оптимально" - не означает "очень быстро".


Можно оптимизировать по памяти.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 12:02 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7333
Благодарил (а): 21 раз.
Поблагодарили: 127 раз.
Mihail писал(а):
Речь шла о использовании дополнительного программного стека.
Оптимизатор с этим может разобраться.

Само по себе оно ни о чем не говорит. Дополнительный стек при отсутствии аппаратной поддержки - это все равно кусок памяти. Со всеми вытекающими тормозами при доступе (по крайней мере, на x86). Одна из задач оптимизации по производительности - минимизация обращений к памяти. И заведение ее дополнительного участка в целом не способствует уменьшению числа обращений. Это только кажется, что мы перекидываем числа со стека на стек. На самом деле пересылка все равно идет между блоками памяти. Чем тут поможет оптимзатор? Ну разве что сделает value tracking для ликвидации лишних перекидываний чисел.

Mihail писал(а):
Можно оптимизировать по памяти.

Оптимизация по памяти хороша при свернутом шитом коде :) Вот уж оптимизация так оптимизация... никакой компилятор машинного кода не угонится. Все равно надо начинать с концептуальных решений, тогда и оптимизаторам будет меньше работы.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 19:24 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Хищник писал(а):
Одна из задач оптимизации по производительности - минимизация обращений к памяти.


Мой оптимизатор этим и занимается.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 21:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7333
Благодарил (а): 21 раз.
Поблагодарили: 127 раз.
Mihail писал(а):
Мой оптимизатор этим и занимается.

И что, он может увеличить количество обращений в одном месте, чтобы в другом оно уменьшилось, а в сумме код стал быстрее?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 16, 2006 11:56 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Хищник писал(а):
Mihail писал(а):
Мой оптимизатор этим и занимается.

И что, он может увеличить количество обращений в одном месте, чтобы в другом оно уменьшилось, а в сумме код стал быстрее?


Если мы несколько раз в программе обращаемся к одной ячейке памяти,
то оптимизатор может заменить это обращение на использование значения,
которое осталось в регистре.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 16, 2006 12:15 
Причем тут обсуждение оптимизаторов в данном конкретном топике?

P.S. Внимательнее надо относится куда постить сообщения:)


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

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


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

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


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

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