2010-09-24 2 views
5

Что является наиболее удобным способом точного измерения прошедшего времени настенных часов в .NET? Я ищу что-то с микросекундной точностью, если возможно (10^-6 секунд).Точно измерять истекшее время настенных часов в .NET.

+2

Прошло ли «настенные часы», эквивалентные прошедшему времени? – spender

+0

@spender: [Время настенных часов] (http://en.wikipedia.org/wiki/Wall_clock_time) - общее время, необходимое для выполнения задачи. –

+0

Ах. ОК, в отличие от процессорного времени. Получил это сейчас. – spender

ответ

7

System.Diagnostics.Stopwatch - ваш лучший выбор. Тем не менее, точная точность будет зависеть от аппаратного обеспечения компьютера, который вы используете, т. Е. Доступен ли счетчик производительности с высоким разрешением. (Вы можете проверить, что с IsHighResolution поля.)

использование Примера:

Stopwatch sw = Stopwatch.StartNew(); 
// Do stuff here 
sw.Stop(); 
TimeSpan time = sw.Elapsed; 

Обратите внимание, что если вы используете ElapsedTicks свойства, что измеряется в таймере тиков, которая не является таким же, как используемым клещи в DateTime и TimeSpan. Это меня поймало до сих пор - вот почему я всегда пользуюсь ElapsedMilliseconds или Elapsed.

+0

Это выглядит идеально. В моей системе поле «Частота» требует разрешения более одной десятой микросекунды. – pauldoo

0

Вот класс, который обеспечивает ожидание такого масштаба, так как я полагаю, в конце концов, что это то, что вам нужно сделать. Время CPU StopWatch @, возможно, получит APC, и вы пропустите свое время окончания.

См https://stackoverflow.com/questions/15725711/obtaining-microsecond-precision-using-net-without-platform-invoke

Для лучшего пути ИМХО

Дайте мне знать, если вы найдете в противном случае!

Смежные вопросы