Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Какой код быстрее   Найти похожие ветки 

 
Учащийся   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
15-1269576375
Джони
2010-03-26 07:06
2010.08.27
Командная строка и URL запрос


3-1243316202
Naruto
2009-05-26 09:36
2010.08.27
UPDATE в SQLite


2-1267766469
lady
2010-03-05 08:21
2010.08.27
Как получить все вероятные значения Bin


2-1269207506
s_t_d
2010-03-22 00:38
2010.08.27
Не получается запись в таблицу с пом. FIBPlus


15-1273053437
'<>
2010-05-05 13:57
2010.08.27
Разложение числа на множители.