Главная страница
    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.061 c
15-1272918602
Юрий
2010-05-04 00:30
2010.08.27
С днем рождения ! 4 мая 2010 вторник


15-1264368629
Юрий
2010-01-25 00:30
2010.08.27
С днем рождения ! 25 января 2010 понедельник


15-1271364443
pokey
2010-04-16 00:47
2010.08.27
Регистрация в QIWI


15-1264591245
Galera
2010-01-27 14:20
2010.08.27
Что-то блокирует интернет


2-1274643123
RWolf
2010-05-23 23:32
2010.08.27
Выполнить код при завершении программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский