Секундомер по сравнению с использованием Системы. DateTime. Теперь для синхронизации событий [дубликат]

91
задан Superbest 12 April 2012 в 21:22
поделиться

2 ответа

Согласно MSDN :

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

Он использует более высокое разрешение / точность, чем DateTime.Now .

Вы также можете проверить эти ссылки по теме:

Environment.TickCount vs DateTime.Now

Является ли DateTime.Now лучшим способом измерения производительности функции?

DateTime достаточно хорош для обеспечения точности ко второму, вероятно, но что-то еще, я бы порекомендовал StopWatch .

75
ответ дан 24 November 2019 в 06:51
поделиться

в этой ссылке на производительность функции синхронизации обсуждается конкретная проблема, в частности в этом абзаце:

Проблема в том, что согласно MSDN разрешение функции DateTime.Now составляет 10+ миллисекунд, и нам нужно позвони дважды! Так что это приведет к размаху 20+ мс в ваших измерениях времени выполнения. Поскольку наши вызовы функций часто возвращаются намного быстрее, чем это окно в 20 мс, этого недостаточно.

РЕДАКТИРОВАТЬ: Это похоже на то, что второй DateTime.Now вызывается в другое время, чем когда завершается метод секундомера.

8
ответ дан 24 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: