| Altair |
7.03.2004 13:39
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Быстрые циклы.
Всего тестировалось 4 конструкции:
Проведение теста: сортировка массива (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 килобайт )
Кол-во скачиваний: 754-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
| Altair |
17.06.2004 13:34
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Вот еще:
Если в программе используется write и writeln, то следует убрать последнюю, а использовать только write и управляющие символы. Доказательство преимущества этого способа: 1 байт с проги снимется, т.к. writeln и write процедуры вне кода описанны, и компилтруются в расчете на FAR. А так, вместо 2 байт на дальнюю модель памяти (т.е. на адрес процедуры) уйдет только 1 байт! ====== добавил позже ======= Облом. Я проверил все. 1. Логические операции бесполезно упрощать! 2. Writeln работает быстрее, чем write('ddfd',#13,#10), и к тому же на 100 кб(!!) меньше код получается (использовался один раз). 3. Сильно уменьшает код (на 150-200 кб) следующие директивы (применять только на уже оптимизированных программах) Цитата N+ - сопроцессор E+ - эмуляция сопроцессора I- - отключение проверок ввода/вывода R- - отключение проверок на границы массивов S- - отмена проверки на переполнение стека Q- - отмена проверок на границы типов (overflow, underflow) B- - быстрое вычисление логических условий D- - отключить информацию для отладки (пропадает возможность отлаживать программу!!!) (взял с сурсов.) Очень полезные директивы. Только две первые не влияют на размер. Сообщение отредактировано: Oleg_Z - 17.06.2004 15:45 -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
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 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![]() ![]() |
|
Текстовая версия | 9.12.2025 0:20 |