Member
Статус: Не в сети Регистрация: 14.04.2003 Откуда: Минск, Беларусь
To Rashid: Да не, под практикой я понимал более современное оформление/структурирование кода. Код из учебников хорош и даже замечательно структурирован - но стиль уже не то. Глаз несколько режет. Это в общем то и не упрек для быстрописаной программулины, так, пожелание на будущее А борландовский паскаль компилирует замечательно - к нему никаких претензий (самое главное весьма надежно). Еще компилер 1992 года с современным оптимизирующим сравни
Сейчас откомпилил пузырьковую сортировку в Visual C++ (Maximize Speed). Результат (16000/10) - 25 сек. Против 66 раньше в DOS 16-bit, т. е. Visual C++ создал примерно в 2.5 раза более быстрый код, чем Турбо Паскаль. Но я не знаю, насколько улучшится время выполнения на Атлонах...
"Прощайте, милый граф!
... И все-таки, я пгав или не пгав?"
procedure RestoreOriginalArray;
begin
for I:=1 to ArraySize do TempArray[I]:=OriginalArray[I]
end;
на TempArray:=OriginalArray компилятор это проглотил, но суммарное время теста возросло на 3 сек. (439->442). Конечно, так выглядит короче и красивее, но, имхо, у Turbo Pascal 7.1 какие-то траблы с присвоением массивов - становится медленнее фора. Вернул назад.
Member
Статус: Не в сети Регистрация: 14.04.2003 Откуда: Минск, Беларусь
Вот результаты моего тора на 2315MHz - DOS 144сек, D5(оптимизация включена) - 37сек. Что тут сказать? Не силен атлон в Legacy коде Но в родном 32 битом - явно в тему. Код в 3.9 раза быстрее.
Member
Статус: Не в сети Регистрация: 14.04.2003 Откуда: Минск, Беларусь
Rashid
Цитата:
Turbo Pascal 7.1 какие-то траблы с присвоением массивов - становится медленнее фора. Вернул назад.
А ты не знаешь почему ? Дело в том что копирование массива целиком MOVS-ом выполняется, а фором - как загрузка в регистр -сохранение из регистра. На старых процессорах (на которые старые компилеры ориентированы ) MOVS быстрее, на новых - именно загрузка/сохранение регистра, как это ни удивительно Так что это не компилера проблема (хотя это и не проблема вовсе), а процессора. Вообще, для современного процессора чем проще команды и тупее код - тем лучше, декодеры и предсказания лучше работают.
Вот результаты моего тора на 2315MHz - DOS 144сек, D5(оптимизация включена) - 37сек. Что тут сказать? Не силен атлон в Legacy коде Но в родном 32 битом - явно в тему. Код в 3.9 раза быстрее.
Я прогнал тест на Дельфи 6 на дюроне 840, так там прогресс налицо: с 398 до 81 сек. :-0 Это уже не в 3.9, а в 5 раз быстрее! И это при том, что ничего не изменилось: алгоритмы те же, массив тот же (байтовый), размерность и число повторений то же. А вот что меня действительно удивило, так это то, что сортировка вставкой на Дельфах стала заметно быстрее сортировки выборкой (на Turbo Pascal было наоброт ). Как это объяснить? Кол-во сравнений/присваиваний осталось прежнием (алгоритм ведь тот же). Кроме как улучшение работы "предсказалки" процессора в этой компиляции алгоритма мне больше ничего в голву не приходит. И еще один "финт": отсортированный наоборот массив теперь сортируется гораздо быстрее исходного (по-крайней мере на Celeron'е). Кстати, выкладываю этот новый тест на своей оверклокеровской странице (Rashid/files). Если кому надо...
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Вот в лоб перевел перваый вариантт DiffSort на Delphi 7 под консольны вариант.
Переделал все byte на longint для пущей оптимизации под 32 битную среду.
И перевел засекание времени на миллисекунды.
http://cp.people.overclockers.ru/cgi-bi ... ffSort.rar Странно но результаты почти не изменились, может надо что еще оптимизировать было? У меня времени правда небыло этим заниматься, просто перегнал как есть.
Добавлено спустя 4 минуты, 44 секунды: Кстати потом я скачал GUI версию и что-то она слишком уж шустро работает , слишком шустро! Что-то мне кажется там уже совсем другие алгоритмы нежели были в оригинальной версии,
Добавлено спустя 1 минуту, 38 секунд: ХА! Малость переделал код, убрал глобальные переменные используемые в циклах и сделал их всех локальными в каждой процедуре, скорость на 12с возросла. Щас еще пооптимизирую и закачаю второй вариант переделки.
Добавлено спустя 6 минут, 12 секунд: Оптимизируем дальше, вырубил в компиляторе Range Checking и Overflow Checking. Вот теперь результаты больше похожи на те, что в последнем GUI.
Rashid Интересная работка получилась!
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
SweetLow писал(а):
Не силен атлон в Legacy коде Но в родном 32 битом - явно в тему. Код в 3.9 раза быстрее.
не, но ты то что? ... от кого угодно, но от тебя не ожидал. К7 никак не медленнее Р3 на той-же частоте.
2ALL ... нифига не могу понять, в чем 'фенька'.
Если пишется бенч процессора, то это можно делать только руками и на ASM. Тут 'без вариантов'.
Например, я знаю как 'опустить' Р4 или К7 в разы и никто не заметит, но ... это же не бенч будет. Смысл? ....
Причем, сделать это для К7 черезвычайно сложно, очень грамотно сделанный процессор. Про Р3 ничего не могу сказать, не писал жестко оптимизированных программ под него.
Бенч должен скорее не 'что' делать, а 'как' делать (как реализованы команды и их взаимосвязь).
p.s.
Впрочем, наверно, я не понял смысла этого обсуждения.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения