Обычные функции библиотек Visual Studio, работающие со временем (например time), обеспечивают точность отсчета 1 сек. Иногда этого бывает недостаточно (например, если нужно измерить скорость передачи данных).
Более точный метод - использование пары функций QueryPerformanceFrequency и QueryPerformanceCounter. Первая функция позволяет определить частоту изменения некого внутреннего счетчика (сколько тиков он делает в секунду), а вторая - позволяет считывать значения этого счетчика в произвольные интервалы времени. Таким образом, чтобы измерить интервал времени T между событиями N1 и N2, нужно просто во время этих событий получить значения счетчика (функцией QueryPerformanceCounter) - пусть это будут числа C1 и C2, получить их разность, а потом поделить эту разность на величину, поученную вызовом QueryPerformanceFrequency. Получим время в секундах между этими событиями. Пример кода есть в MSDN и на сайте Microsoft.
Время можно отсчитывать также (с несколько меньшей точностью) вызовами функции GetTickCount. Она возвращает значение счетчика, который тикает каждую 1 миллисекунду.
Следует иметь в виду, что поскольку Windows не является системой реального времени, то точность результатов, полученных вызовами этих функций не гарантируется (зависит от загруженности системы).
[Ссылки] 1. Класс, использующий для вычисления интервалов времени функции QueryPerformanceFrequency и QueryPerformanceCounter. 2. Дока от Микрософт - How To Use QueryPerformanceCounter to Time Code. |