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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 366 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17, 18, 19 ... 25  След.
Автор Сообщение
 Заголовок сообщения: Re: СПФ и оптимизатор
СообщениеДобавлено: Вс янв 15, 2012 20:44 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Ну почему же не последовательным перебором ответов? :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: СПФ и оптимизатор
СообщениеДобавлено: Вс янв 15, 2012 20:46 
Хищник писал(а):
Ну почему же не последовательным перебором ответов? :))
Обычно, трех итераций хватает.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: СПФ и оптимизатор
СообщениеДобавлено: Вс янв 15, 2012 21:00 
Хищник писал(а):
Гость писал(а):
Правила обработки также можно брать, например из VFX форта.

А они там есть в том виде, чтобы стыковались с макроподстановщиком? Не проще ли пойти по нормальному пути, и таки почитать хотя бы Dragon Book?


Тогда ещё проще - купить тот-же VFX или использовать
evalution версию в доступных возможностях и не обременять себя "непрофильными" потребностями использования Форт языка? (отимизацией кода)


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

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

Уважаемые Гости, а вам не очень сложно логиниться?


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

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

Сравнивал как-то http://en.wikipedia.org/wiki/Fast_inverse_square_root и пару sqrtss + divss на атлоне К10.
Так первый способ несколько медленнее.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
dynamic-wind писал(а):
Сравнивал как-то http://en.wikipedia.org/wiki/Fast_inverse_square_root и пару sqrtss + divss на атлоне К10.
Так первый способ несколько медленнее.

А смысл делать это на платформах где есть сопроцессор.
Проще воспользоваться сопроцессором:
Код:
sqrt: ( n -- sqrt )
$ -4 @P=A  $ -4 0=@P
0SQRT
$ -4 @P=0- $ -4 A=@P ; SEE sqrt

CODE sqrt
5D1AB7 8945FC           MOV     FC [EBP] , EAX
5D1ABA DB45FC           FILD    DWORD FC [EBP]
5D1ABD D9FA             FSQRT
5D1ABF DB5DFC           FISTP   DWORD FC [EBP]
5D1AC2 8B45FC           MOV     EAX , FC [EBP]
5D1AC5 C3               RET     NEAR
END-CODE
( 15 bytes, 6 instructions )

_________________
С уважением, chess


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

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

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


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

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


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

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

Я обращаю внимание, что речь идет о планировании новой разработки. Запустить Форт можно и без оптимизатора. При этом можно проверить, что в таком трансляторе есть 64 бита, или поддержка Unix, или графический язык "черепашка". Стягивать эффективность к наличию правил оптимизатора нерационально.


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

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

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

Хищник писал(а):
Запустить Форт можно и без оптимизатора.

Основное требование к форт-системе для внедрение оптимизатора (по моей методике) это подпрограммный шитый код. Желательно использование ТОСа.
На первом этапе, модификация программы COMPILE, .

Хищник писал(а):
При этом можно проверить, что в таком трансляторе есть 64 бита, или поддержка Unix, или графический язык "черепашка".

В смысле? Это программа будет проверять? Зачем?

Хищник писал(а):
Стягивать эффективность к наличию правил оптимизатора нерационально.

При реализации оптимизатора, без правил в любом случае не обойдешься.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: СПФ и оптимизатор
СообщениеДобавлено: Вт янв 17, 2012 16:28 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Mihail писал(а):
Оптимизатор в любом случае, придется адаптировать к железу.
Основная оптимизация производится за счет особенностей конкретного процессора.


Конечно. Например больше регистров и отличие в системе
команд и их возможностях:)

Mihail писал(а):
При этом, кое что можно заимствовать при переходе на
другой процессор.


По возможности, чтобы был составлен базис типовых решений
и по возможности взаимоувязанных.


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

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

:aaa;
Mihail писал(а):
Хищник писал(а):
Запустить Форт можно и без оптимизатора.

Основное требование к форт-системе для внедрение оптимизатора (по моей методике) это подпрограммный шитый код. Желательно использование ТОСа.
На первом этапе, модификация программы COMPILE, .

Ага. Я удивлюсь, если об этом еще кто-то на форуме не знает :)
Mihail писал(а):
Хищник писал(а):
При этом можно проверить, что в таком трансляторе есть 64 бита, или поддержка Unix, или графический язык "черепашка".

В смысле? Это программа будет проверять? Зачем?

Программе это проверять вобщем-то незачем :) А вот человеку - вполне можно. К примеру, кто-то мечтал написать 64-битный Форт. Почитал форум - рраз, и необходим оптимизатор! Жизненно необходим, без него никуда. Человек подумает-подумает, решит, что что-то слишком сложно, и не будет писать. А если прочитает, что достаточно сделать стек, написать простенький разбор строк и простенькую компиляцию, то подумает, что все это просто, и таки напишет тот транслятор, который ему хочется. Вот и вся разница. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: СПФ и оптимизатор
СообщениеДобавлено: Вт янв 17, 2012 16:46 
Mihail писал(а):
Оптимизатор в любом случае, придется адаптировать к железу. Основная оптимизация производится за счет особенностей конкретного процессора. При этом, кое что можно заимствовать при переходе на другой процессор.

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

Раз никто не хочет колоться, расскажу о своих жалких экспериментах по оптимизации (1991-2011).
1) Одна из первых моих задач была очень простой. Надо было раскидать значения фазовых сдвигов ФАР из таблиц разработчика в таблицы прошивки. До меня эту программу попытались реализовать на Turbo Pascal, но время бесперебойной работы PC-AT оказалось меньше времени работы программы. Я быстро накидал программку на честном masm-е. Она справилась минут за двадцать. Здесь я столкнулся с явлением избыточной оптимизации - полученные за двадцать минут результаты сбрасывались на перфоленту три рабочих дня.
2) Так как я был явным сторонником языков C и Forth, то абстрактную оптимизацию воспринимал очень настороженно, т.к. самой сильной стороной этих языков считал принцип: "что написал, то и получил". Более того, осилив "Построение и анализ ..." Ахо и компании, я уяснил, что всякие данные - это множество, а всякое множество может быть представлено таким образом, чтобы оптимизировать именно те операции, которые нам потребны. С тех пор с недоверием отношусь к языкам со встроенными списками и множествами.
3) Время шло, компьютеры становились все мощнее. Программа на Turbo Pascal рисовала вполне приличную пиксельную графику на 21"-мониторе, программы на GW-Basic летали с такой скоростью, что всем стало наплевать, что они честно интерпретируются.
4) Следующий случай был совсем смешным. Надо было как-то ускорить программу, созданную с использованием картографического ядра от Top-Plan. После нескольких попыток как-то оптимизировать честное Win-рисование оказался перед необходимостью переводить всю графику на OpenGl (часть графики этой программы уже и так была под нее). Перед этим решил подчистить, на всякий случай, саму картографическую БД. Оказалось, графика была не причем, выкинул избыточную очистку буферов (они заполнялись последовательно) и старт программы вместо минут стал занимать секунды. Для очистки совести отказался и от XML-баз данных (они тоже источник тормозов, особенно библиотеки, которые пытаются работать с XML по правилам реляционных БД).
5) Прочел книжку Кернигана и Пайка "Практика программирования". Там приведен интересный пример оптимизации (работа со строками) и подтверждено мое опасения по поводу "стандартных списков". Оказывается STL жутко тормозит на коротких очередях.
6) Последние годы работал в сфере, где с большими объемами информации надо было быстро проводить сложные преобразования. Вынес следующее. Главный источник торможения - избыточные копирования и переформатирования блоков информации. Вплоть до того, что у ведущего программиста проекта была присказка: "Не пошел тест, свапни исходные или полученные данные". Кроме того, анализ показал, что после разумных преобразований программ ускорять нужно считанное количество типовых операций (не более десятка).
7) Анализируя исходники Linux сразу обнаружил, что оптимизация при компиляции там необходима. Хитрые авторы для удобства связывания и макроподстановки используют такие конструкции, которые будучи откомпилированы буквально вызовут внесение в код большое количество пустых операторов или избыточных переадресаций.
8 ) Т.к. конкретно моя работа состояла в анализе ПО, я выяснил, что главная причина торможения - обычно, бешеная избыточность кода современных кодеров. Причем, заставлять исправлять их огрехи оптимизатор бессмысленно, т.к. количество критических ошибок программистов так же было очень велико. Избыточный код порождал избыточные ошибки. Приходилось заставлять переписывать.
9) Попытка модных программистов перейти от сложных структур управления к взаимодействию большого числа простых процессов/потоков вопроса не решила, т.к. поклонники этого метода забыли, что синхронизация этих процессов вопрос тоже не простой. С ужасом наблюдал за программами, которые сами себя душат избыточным трафиком пустых сообщений.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: СПФ и оптимизатор
СообщениеДобавлено: Ср янв 18, 2012 11:07 
Не в сети

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

Уважаемый коллега. Я давно уже говорю пытаюсь сказать о том, что тут имеет место ... подобрать бы слово ... стратегическая ошибка. Фактически, этот подход ведёт к игнорированию некоторых возможностей языка, сужению их.
Имеет место грустная тенденция (или закономерность):фортеры имеют перед собою весьма гибкую систему с множеством возможностей к расширению (преобразованию практически до неузнаваемости) но не могут ими воспользоваться, т.к. "нагружены" предубеждениями по отношению к этим путям расширения.
Оптимизатор - любого типа: такой, как тут говорил chess или тот, что встроен Михаилом в форт, можно рассмотреть как расширение языка. Да, оно плохо сделано - тем, что получилось, трудно дальше пользоваться как частью языка - но это недостаток, а не причина осуждать все такие попытки. Если бы правил у Михаила было немного и они были бы ясны и не нарушали привычки фортеров ("языковые привычки"), то вряд ли кто-то стал бы отказываться от этого. Пока же, к сожалению, разобраться в функционировании оптимизатора и "дополнить" его - достаточно трудно. Он не оформлен как часть языка и потому создаёт ощущение несвободы.

Тенденция, о которой упоминалось - негативная: любая попытка расширить изначальный форт пресекается , не получает общественного признания, т.к. оказывается намного сложнее первоначального продукта. Любая попытка, но (тут прав всё-таки Хищник) - это проблема не форта и не фортеров, которые предприняли попытку усложнить продукт, а проблема алгоритмов - почти каждый полезный алгоритм сложнее языка, на котором он пишется, по крайней мере для программиста - пользователя компилятора. И растерянный фортер уже не может любоваться простотой и доступностью форта - он даже в недоумении - куда же делась та прозрачность, которая подтолкнула к выбору управляемого языка в качестве инструмента. Но полученная сложность - это не сложность "ухудшеного" форта, которую нужно преодолеть, а сложность решаемой задачи. В данном случае - оптимизатора.

Впрочем, я подозреваю, что среди фортеров мало найдётся людей, неспособных создать оптимизатор


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: СПФ и оптимизатор
СообщениеДобавлено: Ср янв 18, 2012 12:41 
offtop
Мне кажется, что ошибка здесь не стратегическая, но системная. Мне все время казалось, что выход лежит в той стороне, куда указал Броуди: поддержки всеми последующими наворотами того единого стиля, который он (и многочисленные цитируемые им живые классики) предлагает. На данном Форуме я убедился, что неправ: очень многие понимают Форт совершенно не так как я, определяют слова совершенно в другом стиле, требуют расширения языка в совсем непонятную для меня сторону... Я бы сказал, что здесь, как в РСДРП, требуется раскол - на группы исповедующие одинаковые, нет, не парадигмы, а просто терминологию. Называющие транслятором, оптимизатором, шитым кодом... одно и то же. Пока же Forth представляет из себя нечто глубоко аморфное, любой термин оспаривается, а любое решение порицается ввиду какого-либо уклона.
конец offtop (Если это обсуждать, то не в этой теме).
Мое предыдущее выступление было не против оптимизации, а за. Пока не определена область применения оптимизации, мы вправе считать оптимизатором все, что угодно. А область мы не определим, пока не вернемся с небес теории на землю практики. Поэтому и жду, что другие тоже поделятся опытом.


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 366 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17, 18, 19 ... 25  След.

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


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

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


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

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