Программирование PC Миллисекундный таймер для Windows (как в программе точно отсчитывать время) Sat, December 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Миллисекундный таймер для Windows (как в программе точно отсчитывать время) Печать
Добавил(а) microsin   

Обычные функции библиотек 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.

 

Добавить комментарий


Защитный код
Обновить

Top of Page