Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизКакой код быстрее Найти похожие ветки
← →
Учащийся (2010-05-16 08:13) [0]Здравствуйте!
Я придумал два различных варианта кода
1.if not(i mod 2 = 0) then
if (n mod i = 0) then
Proc;
2.if not(i mod 2 = 0) and (n mod i = 0) then
Proc;
какой из них будет выполнять быстрее и есть ли вообще разница по времени исполнения?Спасибо!
← →
int64 (2010-05-16 08:55) [1]Напиши эти 2 кода подряд, поставь breckpoint.
Вслючи дебагер на остановке (Ctr+Alt+C)
Посчитай отличия. )
← →
int64 (2010-05-16 09:14) [2]Да, проверь тоже самое с директивой {$B+}
← →
MBo © (2010-05-16 09:34) [3]код проверяет, делится ли n на нечетные i
а вот если i можно изначально только нечетные подавать, то одна проверки и не нужна будет...
← →
Учащийся (2010-05-16 10:45) [4]
> MBo © (16.05.10 09:34) [3]
>
> код проверяет, делится ли n на нечетные i
> а вот если i можно изначально только нечетные подавать,
> то одна проверки и не нужна будет...
Спасибо!Это я понимаю, но меня сейчас интересует не то, как проще реализовать задачу, а просто, какая из двух конструкций быстрее работает.И есть ли между ними разница, при трансляции в ассемблер.
> int64 (16.05.10 08:55) [1]
>
> поставь breckpoint.
А что это такое?))
← →
MBo © (2010-05-16 11:42) [5]> поставь breckpoint.
>А что это такое?))
Breakpoint - точка останова - ставится там, где синие точки слева от кода, ткнуть мышкой.
При остановке - Ctrl-Alt-C
Впрочем, данный код никакой роли в быстродействии программы играть не будет.
← →
Омлет © (2010-05-16 12:51) [6]> if not(i mod 2 = 0) then
if (i mod 2 <> 0) then
← →
sniknik © (2010-05-16 12:56) [7]> Впрочем, данный код никакой роли в быстродействии программы играть не будет.
а время выполнения Proc; ?
Учащийся
не то оптимизируешь, вот твои примерные варианты, что сколько работает
if .... then //0.000000000001 сек и возможные варианты 0.000000000002 сек/0.0000000000015 сек
Proc; //1 час
← →
Anatoly Podgoretsky © (2010-05-16 16:25) [8]> Учащийся (16.05.2010 08:13:00) [0]
У тебя нет секундомера, проблема только правильно провести измерения.
← →
RWolf © (2010-05-16 17:08) [9]if A then if B … и
if A and B …
дают одинаковый код.
Если, конечно, не включена [ ] Complete boolean eval в свойствах проекта.
← →
Б (2010-05-16 17:19) [10]Научись измерять скорость выполнения кода
через QueryPerformanceCounter и повышением приоритета текущему потоку.
Хотя последнее не особо важно, т.к.
требуется узнать, какой код быстрее и на сколько. (Приблиз.)(Можно использовать хоть GetTickCount.)
А если нужно конкретное, точное время, то + 2-е.
(Для более точных измерений)
← →
Сергей М. © (2010-05-16 23:08) [11]
> Учащийся (16.05.10 10:45) [4]
> при трансляции
> в ассемблер.
Дельфийский компилятор не транслирует в ассемблер - он компилирует (на то он и компилятор) в объектный машкод.
← →
han_malign (2010-05-17 12:07) [12]
> Научись измерять скорость выполнения кода
> через QueryPerformanceCounter и повышением приоритета текущему
> потоку.
- GetThreadTimes - и пофиг какой приоритет...
← →
Б (2010-05-17 22:29) [13]
> han_malign (17.05.10 12:07) [12]
Мой пример проще и нагляднее. А может быть и точнее.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.088 c