IPB
ЛогинПароль:

> Улучшение кода, Уменьшение времени работы программ
Altair
сообщение 7.03.2004 13:39
Сообщение #1


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Быстрые циклы.

Всего тестировалось 4 конструкции:
  • "FOR ... TO ... Do...",
  • "WHILE... do...",
  • "REPEAT ... until ...",
  • " If... Then GOTO ..."

Проведение теста:
сортировка массива (array[1..20] of integer) методом пузырька.
Всего было проведено 30 тестов :
10 c n= 10^4;
10 c n= 10^5;
10 c n= 10^6;
и один тест с n=10^7 (один, т.к. с увеличением степени n на 1, время проведения теста увеличивается соответственно в 10 раз)


Результат:
Во всех случаях (каждый тест - новый массив) самой быстрой конструкцией оказалась "While ... do...", следом за ней "If ... then Goto..."


Прикрепленные файлы
Прикрепленный файл  test.pas ( 1.76 килобайт ) Кол-во скачиваний: 739


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
trminator
сообщение 19.05.2004 19:35
Сообщение #2


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


P@sh@, сомневаюсь, что игра стОит свеч. Хотя попробовать можно... на jump'ы тратится не только время на их выполнение, если еще учесть, что может неверно сработать "предсказание" процессором, какую команду пускать на конвейер. Хотя это уже оптимизация будет не "качественная", а какая-то "количественная"...

ЗЫ: я ее все равно уже сдал...


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Altair   Улучшение кода   7.03.2004 13:39
mj   на процессорах P2 и ниже FOR быстрее чем WHILE до...   13.03.2004 18:09
Atos   И Да ЗдравствуетИтерация! Пример: старая добра...   16.03.2004 14:44
trminator   [b]Ускорение вычислений mod Програма считает 50 -...   15.05.2004 18:53
P@sh@   [color=blue]Деление на степень двойки Аналогично ...   15.05.2004 20:08
P@sh@   Разворачивание циклов. -=loops unrolling=- Один и...   17.05.2004 18:42
trminator   P@sh@, сомневаюсь, что игра стОит свеч. Хотя попро...   19.05.2004 19:35
Altair   Процедуры FAR Все процедуры в модулях, пишутся в ...   25.05.2004 14:28
BlackShadow   Специально для Oleg_Z: В BP есть такая возможность...   25.05.2004 16:26
BlackShadow   Описалова в книгах достаточно. Посмотрю чего - зав...   25.05.2004 22:46
trminator   Как нам говорили на лекции по ОС, оверлей - аналог...   27.05.2004 18:30
trminator   А про использование AssignCRT вместо Assign для за...   27.05.2004 18:37
BlackShadow   Ну и зкономии ради можно (олимпиадныю трюк) воспол...   27.05.2004 21:40
Altair   Просто есть файловая переменная Input и output тол...   27.05.2004 21:44
trminator   Про сортировку. Понятно, что пузырек и компания ни...   27.05.2004 23:04
BlackShadow   trminator, да похоже на пирамидку. Oleg_Z, использ...   28.05.2004 11:36
trminator   Так... я не закончил про сортировки :) ИМХО, испол...   29.05.2004 15:32
BlackShadow   trminator, по памяти, может, её и проще, но на реф...   31.05.2004 11:08
BlackShadow   Oleg_Z, вот чего у меня в книге есть: Функции Over...   31.05.2004 11:43
Altair   То есть ты хочешь сказать, что если описать : va...   31.05.2004 15:44
BlackShadow   А, если ты напишешь так: Var  a,b:Inte...   31.05.2004 16:04
Romtek   Взято из ООП. Объектно-ориентированное программиро...   7.06.2004 22:25
Altair   Begin и end лишние видимо я поставил, а вот объеди...   8.06.2004 13:52
BlackShadow   Вспомнил один момент такой. При работе с дробями, ...   15.06.2004 12:32
Altair   Нет, ассемблер нужно применять только для шлифовк...   15.06.2004 19:27
Romtek   Complete boolean evaluation (compiler option)   15.06.2004 22:08
BlackShadow   Да уж, Oleg_Z, это действительно отключается дирек...   16.06.2004 13:42
Altair   BlackShadow, в следующий раз оформляй логические ...   16.06.2004 15:20
Romtek   В первом случае имеем 2 операции, а во втором - 3   16.06.2004 16:15
Altair   Да, но во первых операция NOT ИМХО должна выполнят...   16.06.2004 20:24
Altair   Вот еще: Если в программе используется write и wri...   17.06.2004 13:34
Altair   REAL почти в 2 раза медленнее [b]ВСЕХ других число...   18.06.2004 14:05
P@sh@   Oleg_Z Real потому медленнее, что у него размер н...   26.06.2004 7:41
BlackShadow   Int64 появился только в 32-битных компиляторах. По...   2.07.2004 15:23
Atos   А вот это, мне кажется, интересно: Простой пример:...   16.10.2004 8:13
BlackShadow   Atos, ну это и лосю понятно. При последовательном ...   18.10.2004 21:24
Atos   В каком именно Паскале? Ну, я же не лось... Не...   19.10.2004 6:17
GoodWind   Borland Turbo Pascal 7.0 TMT pascal да и во всех ...   19.10.2004 12:17
Atos   Действительно... Просто никогда её не использовал....   19.10.2004 13:51
Altair   Странно, тестирую бытсрую и пирамидальную на скоро...   7.11.2004 15:14
Altair   Да, все верно, [color=blue]пирамида медленнее чем...   7.11.2004 16:24
Dark   Просто память физически устроена как конденсаторы ...   9.11.2004 1:23
volvo   [b]Обмен значений в переменных. Для увеличения ск...   22.01.2005 19:39


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 6:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"