![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как сравнить время выполнения 2х функций
Вова © (2012-11-18 06:31:00)var
t: longint;
begin
t := GetTickCount;
{....функция....}
t := GetTickCount - t;
ShowMessage('time ' + IntTostr(t));
end;
не предлагать, т.к. она вроде как показывает с шагом 15 милисекунд или вообщем с каким то шагом, и вообщем за этот шаг все уже успевает отработать в обоих случаях и вообщем не могу понять, что работает быстрее и чем пользоваться, а чем нет )
обе процедуры дают либо 0, либо (редко) 15, либо 16. что наводит на мысль, что это не реальное время выполнения, а недостаточная разрешающая способность метода измерения.
QAZ9 (2012-11-18 17:13:00) [1]
> не предлагать
там все нормально будет ,если не забыть поставить цикл на 1000000000 проходов
bems (2012-11-18 13:36:00) [2]если нужно отсеять моменты когда выполняется что-то паралельно, то GetThreadTimes + статистика
Anatoly Podgoretsky (2012-11-18 12:45:00) [3]t = t1 + t2
Sha (2012-11-18 11:42:00) [4]и фишку, которая может лечь в одной сборке и не лечь в другой
oldman (2012-11-18 11:38:00) [5]
> Dimka Maslov © (18.11.12 10:43) [4]
такая штука, как статистика подразумевает еще и отклонение (дельту)
а=6 плюс-минус 4
b=7 плюс-минус 2
что быстрее?
Sha (2012-11-18 11:33:00) [6]или что тяжелее, зернышко пшеницы или зернышко риса,
если 1000 зернышек пшеницы тяжелее 1000 зернышек риса?
sniknik (2012-11-18 11:25:00) [7]> еще нашел вот это, но я не понял, как получить время исполнения этим....
это лучше не использовать... использовать QueryPerformanceCounter и QueryPerformanceFrequency, везде есть, нет проблем возможных с "этим", и с ними все можно получить, время тоже.
AV (2012-11-18 11:24:00) [8]
> хотя цифры сильно разные раз от разу
потому что в это время система могла делать/не делать что угодно
одного раза не достаточно
намекают выполнить функцию 10000 раз и замерить время
результат - среднее значение
возможно, хватит и GetTickCount, т.к. точность уже не так важна
sniknik (2012-11-18 11:17:00) [9]> если паралельно что то выполняется, то оно тож посчитается...
при любом способе так.
Sha (2012-11-18 11:05:00) [10]как найти вес зёрнышка пшеницы, если 1000 зернышек весят 65г?
Dimka Maslov (2012-11-18 10:43:00) [11]Есть такая штука, как статистика (не та, которая не знает, сколько в стране стульев). Она нас учит, как проводить замеры и отсеивать недостоверные результаты.
Вова (2012-11-18 06:54:00) [12]
g := RDTSC;
{....function....}
g:= RDTSC -g;
ShowMessage('time ' + IntTostr(g));
хм, попробовал вот так, наверное получилось, хотя цифры сильно разные раз от разу, но первые 2 разряда в основном стабильные, но иногда выскакивает число на порядки выше среднестатистического (видимо как раз из за паралельных процессов) а один раз выскочило на порядок ниже. Вообщем наверное таки сравнил, но не уверен ))
сравнивал scanline, вернее сканлайном получают указатель на начало картинки, а потом все обращения через указатели без сканлайн и QPixels - получилось вроде как что второе малость быстрее пашет, для примера приведение картинки в серый цвет....правдоподобно....
Вова (2012-11-18 06:38:00) [13]и к томуже, я так понял она считает тики процессора, но не обязательно что при выполнении моего кода...т.е. если паралельно что то выполняется, то оно тож посчитается...
Вова (2012-11-18 06:35:00) [14]
function RDTSC: Int64; register;
asm
rdtsc
end;
еще нашел вот это, но я не понял, как получить время исполнения этим....