Что такое таймеры, блок, используемый Stopwatch.ElapsedTicks - PullRequest
11 голосов
/ 26 апреля 2011

Раньше я думал, что

  • Stopwatch.ElapsedTicks равно
  • Stopwatch.Elapsed.Ticks.

Но это не так.В то время как последний представляет собой период в 100 наносекунд, первый использует загадочную единицу, называемую timer ticks.Интересно, что это, и почему они отличаются от обычной единицы измерения?

Ответы [ 3 ]

9 голосов
/ 26 апреля 2011

С документы :

Секундомер измеряет прошедшее время, считая отметки времени в базовом механизме таймера. Если установленное оборудование и операционная система поддерживают счетчик производительности с высоким разрешением, то класс секундомера использует этот счетчик для измерения прошедшего времени. В противном случае класс Секундомер использует системный таймер для измерения прошедшего времени. Используйте поля Frequency и IsHighResolution , чтобы определить точность и разрешение реализации синхронизации секундомера.

Да, боль в том, что "клещи" перегружены и означают две разные вещи: (

Я думаю, что это в основном потому, что Stopwatch дает довольно «сырое» представление счетчика производительности, который может иметь различные реализации для того, что он означает «галочкой».

5 голосов
/ 26 апреля 2011

Stopwatch.ElapsedTicks измеряет «тик» в терминах секундомера, который представляет собой отрезок времени в 1 секунду / Stopwatch.Frequency.

Внутренне это основано на поддержке высокопроизводительного счетчика Windows (если поддерживается вашей системой, что почти всегда верно). Собственный вызов - QueryPerformanceFrequency , длина которого будет варьироваться в зависимости от поддержки вашего оборудования.

0 голосов
/ 04 мая 2011

Может быть, это помогает увидеть вывод консоли ...

Операции вставки / удаления LinkedList 500 ElapsedTicks: 45871
Операции вставки / удаления LinkedList 500 Elapsed.ticks: 141266
Операции вставки / удаления LinkedList 500 milisec: 14.1266
Список 500 операций вставки / удаления ElapsedTicks: 1235121
Список 500 операций вставки / удаления Elapsed.ticks: 3803744
Список 500 операций вставки / удаления milisec: 380,3744

(из которого подтверждается, что Elapsed.Ticks измеряются за 100 наносекунд)

...