Как отмечали многие, класс высокоточных секундомеров предназначен для ответа на вопрос "сколько времени это заняло?"тогда как класс DateTime предназначен для ответа на вопрос «когда Доктор Кто начинает?»Используйте правильный инструмент для работы.
Однако проблема правильного измерения истекшего времени заключается не только в правильной настройке таймера.Вы также должны убедиться, что вы измеряете то, что действительно хотите измерить.Например, рассмотрим:
// start the timer
M();
// stop the timer
// start another timer
M();
// stop the timer
Будет ли существенная разница между временами двух вызовов? Возможно, да .Помните, что при первом вызове метода джиттер должен компилировать его из IL в машинный код .Это требует времени.В некоторых случаях первый вызов метода может быть во много раз раз длиннее, чем каждый последующий вызов вместе взятый.
Итак, какое измерение является "правильным"?Первое измерение?Второй?Средний из них? Это зависит от того, что вы пытаетесь оптимизировать для .Если вы оптимизируете для быстрого запуска , тогда вы очень сильно заботитесь о времени работы.Если вы оптимизируете для количество идентичных страниц, обслуживаемых в секунду на прогретом сервере , тогда вам совершенно наплевать на время выполнения и вам следует разрабатывать свои тесты с точностью до , а не Это. Убедитесь, что вы измеряете то, что вы на самом деле оптимизируете.