Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как сравнить время выполнения 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;


еще нашел вот это, но я не понял, как получить время исполнения этим....


Наверх

Титульная страница Поиск, карта сайта Написать письмо