Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];

Вниз

Скорость функций   Найти похожие ветки 

 
Juster~   (2003-03-05 18:51) [0]

Недавно, решил протестировать ф-ции на скорость и вот результаты: (Числа получены по формуле (Elapsed_Time/Iterations)*1000, причем из всех результатов которые я получал по одной функции я выбирал самый большой)
Пустой цикл - 0.086
i+i - 0.086
i*i - 0.086
i/i - 0.086
sqrt(i) - 1.513
sin, cos - 2.638
random - 0.562
random(10) - 0.259
strToInt("1234567") - 2.076
strToFloat("12345.12345") - 7.050
setLength - 7.350
getMem + freeMem - 7.350

Что скажете насчет умножения, деления?


 
Darthman   (2003-03-05 18:53) [1]

Ты бы лучше в тиках мерил :)


 
Kobik   (2003-03-05 20:10) [2]

Не может такого быть.
Насколько я знаю, умножение на порядок тормознее сложения.
Кстати, какие числа ты брал?


 
Asteroid   (2003-03-05 23:30) [3]

Если ты делал операции отдельными функциями, придется учесть затраты на вызов/выход из функций. Если они слишком большие - умножение вполне может сравняться со сложением.
Кстати, проверь еще, пожалуйста, div и mod


 
A_n_t   (2003-03-06 03:53) [4]

Что-то я не совсем понял как производились расчеты, но у меня результаты немного отличаются.

Я считал так: в таймере поставил цикл на 1 000 000 и в нем производил действия.
Так вот: умножение дольше сложения на 10%
деление дольше сложения на 85%

Так что вывод: нужно деление спользовать по реже, а cos и sin тем более :)

P.S. У тебя одинаковые результаты по пусто-сложение-умножение-деление скорей всего из-за слишком маленького измерения - погрешность сказывается :)


 
JibSkeart   (2003-03-06 13:22) [5]

to A_n_t
Не новость деление нужно избегать :)


 
Ketmar   (2003-03-06 14:26) [6]

>Juster~ (05.03.03 18:51)
скажу, что оптимизацию полезно выключать.

Satanas Nobiscum! 06-Mar-XXXVIII A.S.


 
stream   (2003-03-06 15:11) [7]

Это еще не то! В Turbo Pascal"е у меня холостой цикл выполнялся медленнее чем тот, в котором я выполнял некоторые действия!! (число итераций было постоянным, время считал через GetTime())


 
MVova   (2003-03-06 15:41) [8]


> Juster~ (05.03.03 18:51)

А код писат так

R := 123 + 123;

R := 123 * 123;

R := 321 /123;
?

Если да то + - * / будут одинаково быстры.


 
Anatoly Podgoretsky   (2003-03-06 15:46) [9]

Juster~ (05.03.03 18:51)
Без приведения кода теста и методики, сообщение ничего не стоит. Часто меряют не операцию, а вызов или среднею температу по больнице


 
Juster~   (2003-03-08 12:11) [10]

Кода, к сожалению, уже нету.
Я делал так:

"start := getTickCount;
const Iterations = 50000;
for i := 1 to Iterations do f := 12345+12345; // f : Integer

elapsed := getTickCount - start;
time := elapsed / Iterations; // time - это время функции"

-> MVova: обьясни почему



 
Anatoly Podgoretsky   (2003-03-08 12:24) [11]

Juster~ (08.03.03 12:11)

Данная конструкция будет превращена в
for i := 1 to Iterations do f := 24690;

А конструкция for i := 1 to Iterations do f := 12345/12345; в
for i := 1 to Iterations do f := 1;


 
Anatoly Podgoretsky   (2003-03-08 12:31) [12]

Если хочешь по тестировать то перепиши хотя бы так


const
Iterations = 1000000;
var
A: Integer;
B: Integer;
C: Integer;
begin
A := 123;
B := 123;
Start := GetTickCount;
for I := 1 to Iterations do C := A + B;
Label1.Caption := "SUM=" + IntToStr((GetTickCount - Start) * 1000);

Start := GetTickCount;
for I := 1 to Iterations do C := A * B;
Label2.Caption := "MULT=" + IntToStr((GetTickCount - Start) * 1000);

Start := GetTickCount;
for I := 1 to Iterations do C := A div B;
Label3.Caption := "DIV=" + IntToStr((GetTickCount - Start) * 1000);
end;



 
Anatoly Podgoretsky   (2003-03-08 12:34) [13]

LabelN.Caption := "DIV=" + FloatToStr((GetTickCount - Start) / 1000);
или просто в MS
LabelЬ.Caption := "DIV=" + IntToStr(GetTickCount - Start);



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
9-76248
Axis_of_Evil
2002-10-25 11:39
2003.03.24
Worms


6-76552
OxOTHuK
2003-02-03 22:07
2003.03.24
Socketы


6-76560
Anton
2003-01-29 22:15
2003.03.24
Есть ли ограничение на размер файла передаваемого по FTP


1-76458
Ozone
2003-03-11 06:23
2003.03.24
EXCEL


1-76472
dm37
2003-03-12 12:07
2003.03.24
ini-файл





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