вобщем поставлена задача измерить время сортировки массива. замерить время начала и конца процедуры результата не принесло( может кто подскажет как можно сделать???
вобщем поставлена задача измерить время сортировки массива. замерить время начала и конца процедуры результата не принесло( может кто подскажет как можно сделать???
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
23 ноября 2008 в 18:01
всем огромное спасибо, программа уже работает))))
23 ноября 2008 в 17:03
в винде же есть QueryPerformanceCounter/QueryPerformanceFrequency. как правило дает доли мкс.
23 ноября 2008 в 17:03
Это и есть тот HPET (High Precision Event Timer), о котором я упоминал.
23 ноября 2008 в 16:02
Если массив мелкий, то заворачивание его в цикл может привести к тому, что оптимизирующий компилятор внесет существенные искажения в результаты.
Нужно увеличивать размер массива.
Вариант: оформить функцию
inline __int64 rdtsc()
{
__int64 res;
__asm {
rdtsc
movdword ptr [res], eax
movdword ptr [res + 4], edx
}
return res;
}
Вызывать ее до и после сортировки и сохранять возвращаемое значение в переменных типа __int64.
Функция возвращает номер такта процессора.
P.S. "Разрешение" функции GetTickCount() ~ 15 миллисекунд.
Можно еще использовать HPET, который работает с точностью до долей микросекунды.
23 ноября 2008 в 15:00
Алексей KingOfNothing Руденко
точности не хватает
Денис Боенсков
спасибо, помогло)))
23 ноября 2008 в 14:05
clock() – точность 1/CLK_TCK секунд
GetTickCount() – количество миллисекунд с запуска windows
если массив мелкий, то можно сделать несколько циклов для большей точности
23 ноября 2008 в 14:04
а почему замерение начала и конца не принесло результата?