Почему DateTime показывает разное время выполнения для того же уравнения с теми же входными данными? [Дубликат]

Я столкнулся с этой точной проблемой. Проблема в том, что peek() возвращает Option<&T> (необязательный обертывание ссылки, а не значения). Вы сопоставляетесь на Some(x), а не Some(&x), и это приводит к возникновению заимствования, что приводит к проблеме продолжительности жизни.

I написал сообщение в блоге об этом точном выпуск с образцом кода.

5
задан Matt Johnson 22 July 2013 в 20:26
поделиться

2 ответа

Вы не можете сделать что-то вроде:

  • Вызов Stopwatch.GetTimestamp () на машине A
  • Отправить результат на машину B
  • Вызов Stopwatch.GetTimestamp () на машине B
  • Отправить результат на машину A
  • Вызов секундомера.GetTimestamp () на машине A
  • Рассчитать коэффициент настройки (разница между средний результат для машины A и результат для машины B)
  • Используйте этот корректирующий коэффициент при сравнении последующих результатов на машинах A и B
2
ответ дан Joe 27 August 2018 в 20:00
поделиться

DateTime.Now использует дату базовой ОС, которая имеет разрешение около 15 мкс или даже хуже с системами до Windows XP. Лучшее, что вы можете получить, это Таймер с высоким разрешением, доступный точно в секундомере и его тиках / часах.

Вам нужно будет сначала синхронизировать часы, но это НЕ ЗНАЧИТ «установить дату системы», , Синхронизирующие часы означают вычисление разницы между показаниями, опционально проверяя, является ли она постоянной в качестве потоков времени (то есть, проверяет, не подсчитывается ли каждый из часов быстрее других), а затем с использованием вычисленного смещения для ... смещения показаний, так что «фактические значения» относятся к одной и той же временной базе - по вашему выбору.

Google для «алгоритмов синхронизации часов», чтобы читать об этом намного больше.

3
ответ дан Peter Mortensen 27 August 2018 в 20:00
поделиться
Другие вопросы по тегам:

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