Главная страница
    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.007 c
1-76438
mmmh
2003-03-12 00:08
2003.03.24
Необходимо реализовать запуск прог из своей проги. Очень надо


1-76467
reticon
2003-03-11 23:01
2003.03.24
такой вот нехитрый вопросик...


1-76450
Leran2002
2003-03-11 15:34
2003.03.24
Lotus Notes 5


1-76399
GAlexandr
2003-03-13 13:08
2003.03.24
Чтение из TWriter


7-76679
Arkady
2003-01-28 16:56
2003.03.24
Пароль





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