Существует разница между таймером и секундомером, и путаница между ними приводит к ошибочным предположениям.К сожалению, термин «таймер» используется слишком часто для обозначения нескольких вещей.
Любой компьютер, работающий под управлением Windows 2000 или более поздней версии, вероятно, имеет высокочастотный таймер.Я никогда не сталкивался с компьютером, работающим под управлением Windows 2000, который не имеет такой вещи.
Теперь это высокочастотный таймер.Есть также таймеры: компоненты Windows или .NET.Эти таймеры используются не для хранения времени или для измерения времени, а для выполнения действий с периодическими интервалами.Объекты таймера Windows имеют разрешение 1 мс и очень надежны, когда компьютер не загружен процессором.Таймерные объекты .NET ограничены разрешением приблизительно 15 мс.Вы можете обойти это, используя P / Invoke для непосредственного взаимодействия с объектами Windows, но это не часто необходимо.
Класс .NET Stopwatch основан на высокочастотном таймере.В общем случае Start
запрашивает счетчик производительности и сохраняет значение.Когда вы Stop
, он снова запрашивает счетчик производительности.Прошедшее время является простым вычитанием этих двух значений.Вы можете получить лучшее, чем микросекундное разрешение от секундомера.
И на самом деле, вы можете использовать Stopwatch
с циклом ожидания занятости, который дает вам разрешение менее миллисекунды.Я сомневаюсь, что с ним можно получить субмикросекундное разрешение.
Важно понимать, что, хотя таймеры не надежны за пределами 1 миллисекунды, секундомер, который измеряет прошедшее времяГораздо точнее.Вы можете, вероятно, доверять измерениям прошедшего времени микросекундного уровня из секундомера.Кроме того, я бы на это не рассчитывал.