2012-01-06 2 views
-2

Какой должен быть лучший способ рассчитать временной разброс, который является точным до уровня Microseconds. В настоящее время я делаю следующее:Рекомендуемый метод расчета разницы между двумя временными частями

((TimeSpan)(DateTime.Now - _perfClock)).TotalMilliseconds 

Примечание: perfClock является DateTime (устанавливается до задачи)

Что предполагают, чтобы дать точность ДО миллисекунд, но в моем случае это показывает значение заканчивается «000 ». например, 8000,9000 и т. д. Это заставляет меня думать, что это просто конвертирование секунд в миллисекунды где-то вместо вычисления diff в миллисекундах. (Возможно, я ошибаюсь где-то в коде выше).

Но какой должен быть рекомендуемый механизм для точного расчета времени Diff?

-Sumeet

+2

Я думаю, вы должны смотреть на [ 'Stopwatch'] (HTTP : //msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx) – V4Vendetta

+0

название вводит в заблуждение, так как вы вычитаете из DateTime, а не TimeSpan. –

+0

. i belive, вычитая из DateTime, дает вам временное значение – JasonS

ответ

0

Я не знаю, в каком контексте вы измеряете время, но было бы хорошо, чтобы начать вместе с Stopwatch и проверить результаты.

Также стоит прочитать Precise Measurement

0

Вы пробовали:

TimeSpan diff = DateTime.Now.Subtract(_perfClock); 
2

Проблема не с TimeSpan, то есть с точностью до тиков, что составляет 100 наносекунд.

Проблема в том, что вы используете DateTime.Now для своего таймера.

DateTime.Now с точностью до 16 мс, я верю. как упоминалось V4Vendetta, вы хотите использовать секундомер, если вам нужны результаты с высоким разрешением. Секундомер может предоставить вам тики (длинные) или TimeSpan. используйте Timespan для удобной манипуляции (в вашем случае добавьте/вычитайте).

Следует также отметить, что Секундомер предоставляет свойство .IsHighResolution, чтобы увидеть, если у вас есть более высокую точность, чем DateTime.Now (это всегда так на PC IIRC)

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