Рекомендуемый метод для расчета разницы между двумя временными промежутками - PullRequest
0 голосов
/ 06 января 2012

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

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

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

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

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

-Sumeet

Ответы [ 3 ]

2 голосов
/ 06 января 2012

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

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

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

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

0 голосов
/ 06 января 2012

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

TimeSpan diff = DateTime.Now.Subtract(_perfClock);
0 голосов
/ 06 января 2012

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

Также стоит прочитать Точные измерения

...