Главная arrow Программирование arrow PC arrow Миллисекундный таймер для Windows (как в программе точно отсчитывать время) Saturday, March 25 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

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

Поделиться:

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

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

Последнее обновление ( 16.09.2009 )
 

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

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

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

< Пред.   След. >

Top of Page
 
microsin © 2017