Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Какой код быстрее


Учащийся ©   (2010-05-16 08:13:00) 

Здравствуйте!
Я придумал два различных варианта кода

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;

какой из них будет выполнять быстрее и есть ли вообще разница по времени исполнения?Спасибо!


Б   (2010-05-17 22:29:00) [1]


> han_malign   (17.05.10 12:07) [12]


Мой пример проще и нагляднее. А может быть и точнее.


han_malign   (2010-05-17 12:07:00) [2]


> Научисьизмерять скорость выполнения кода
> через QueryPerformanceCounter и повышением приоритета текущему
> потоку.

- GetThreadTimes - и пофиг какой приоритет...


Сергей М.   (2010-05-16 23:08:00) [3]


> Учащийся   (16.05.10 10:45) [4]
> при трансляции
> в ассемблер.


Дельфийский компилятор не транслирует в ассемблер - он компилирует(на то он и компилятор) в объектный машкод.


Б   (2010-05-16 17:19:00) [4]

Научись измерять скорость выполнения кода
через QueryPerformanceCounter и повышением приоритета текущему потоку.
Хотя последнее не особо важно, т.к.
требуется узнать, какой код быстрее и на сколько. (Приблиз.)(Можно использовать хоть GetTickCount.)
А если нужно конкретное, точное время, то + 2-е.
(Для более точных измерений)


RWolf   (2010-05-16 17:08:00) [5]

if A then if B …и if A and B …дают одинаковый код.
Если, конечно, не включена [ ] Complete boolean evalв свойствах проекта.


Anatoly Podgoretsky   (2010-05-16 16:25:00) [6]

> Учащийся  (16.05.2010 08:13:00)  [0]

У тебя нет секундомера, проблема только правильно провести измерения.


sniknik   (2010-05-16 12:56:00) [7]

> Впрочем, данный код никакой роли в быстродействии программы играть не будет.
а время выполнения Proc; ?

Учащийся
не то оптимизируешь, вот твои примерные варианты, что сколько работает
if .... then //0.000000000001 сек и возможные варианты 0.000000000002 сек/0.0000000000015 сек
    Proc;  //1 час


Омлет   (2010-05-16 12:51:00) [8]

> if not(i mod 2 = 0) then

if (i mod 2 <> 0) then


MBo   (2010-05-16 11:42:00) [9]

> поставь breckpoint.
>А что это такое?))

Breakpoint - точка останова - ставится там, где синие точки слева от кода, ткнуть мышкой.
При остановке - Ctrl-Alt-C

Впрочем, данный код никакой роли в быстродействии программы играть не будет.


Учащийся   (2010-05-16 10:45:00) [10]


> MBo ©   (16.05.10 09:34) [3]
>
> код проверяет, делится ли n  на нечетные i
> а вот если i можно изначально только нечетные подавать,
> то одна проверки и не нужна будет...

Спасибо!Это я понимаю, но меня сейчас интересует не то, как проще реализовать задачу, а просто, какая из двух конструкций быстрее работает.И есть ли между ними разница, при трансляции в ассемблер.

> int64   (16.05.10 08:55) [1]
>
> поставь breckpoint.

А что это такое?))


MBo   (2010-05-16 09:34:00) [11]

код проверяет, делится ли n  на нечетные i
а вот если i можно изначально только нечетные подавать, то одна проверки и не нужна будет...


int64   (2010-05-16 09:14:00) [12]

Да, проверь тоже самое с директивой {$B+}


int64   (2010-05-16 08:55:00) [13]

Напиши эти 2 кода подряд, поставь breckpoint.
Вслючи дебагер на остановке (Ctr+Alt+C)
Посчитай отличия. )


Наверх

Титульная страница Поиск, карта сайта Написать письмо