Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1265841005
Юрий
2010-02-11 01:30
2010.08.27
С днем рождения ! 11 февраля 2010 четверг


15-1273123334
oldman
2010-05-06 09:22
2010.08.27
картинка, потрясающая воображение...


6-1216982606
Uzer32.dll
2008-07-25 14:43
2010.08.27
Доступ к запароленым шарам


2-1269016126
pavel_guzhanov
2010-03-19 19:28
2010.08.27
При сравнении содержимого двух TImage получаю AV


15-1271955175
@!!ex
2010-04-22 20:52
2010.08.27
Помогите настроить UDP Port Forwarding.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский