PDA

Показать полную графическую версию : Измерение времени исполнения функции


marine
16-01-2003, 16:35
Подскажите как в VC измерить время с точностью до сотых миллисекунды (напр. время исполнения функции)

vasketsov
16-01-2003, 17:00
marine

GetTime(&t1);
YourFavoriteFunction();
GetTime(&t2);
GetTime(&t3);
time = t2 - t1 - (t3 - t2) = 2 * t2 - t3 - t1;

Теперь что такое GetTime.
Эта штука должна возвращать время c требуемой точностью.
Например, ZwQuerySystemTime или через QueryPerformanceCounter. Для достижения точности придется YourFavoriteFunction вызывать кучу раз.

XXXX Pro
19-01-2003, 00:59
Есть другой способ: использовать выскоточный системный таймер. Делается это с помощью двух функций:
QueryPerformanceCounter
QueryPerformanceFrequency
Первая функция возвращает текущее значение таймера, вторая - значение, на которое он изменяется за секунду. Время можно высчитать по формуле
(t2-t1)*10000/QueryPerformanceFrequency
(t2 - значение таймера после вызова функции, t1 - значение до вызова).
Но эти функции неудобны тем, что придется использовать 64-битные значения - так называемые Large Inetger (хотя большинство современных компиляторов  работают с ними нормально).

marine
20-01-2003, 14:09
Спасибо ребята! Вы мне очень помогли!
Марина.

DENoszone
02-07-2008, 18:44
Ребята мне надо просто в определеном месте запустить таймер и показывать его на экран.в секундах

и что бы я ставил таймер 10 сек и шел обратный отстет..после истечении времени что бы закнчил работу...




© OSzone.net 2001-2012