Поиск…


Синтаксис

  • stopWatch.Start () - запускает секундомер.
  • stopWatch.Stop () - останавливает секундомер.
  • stopWatch.Elapsed - Получает общее прошедшее время, измеренное текущим интервалом.

замечания

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

Создание экземпляра секундомера

Экземпляр секундомера может измерять прошедшее время в течение нескольких интервалов с общим временем, прошедшим сложение всех отдельных интервалов. Это дает надежный метод измерения прошедшего времени между двумя или более событиями.

Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();

double d = 0;
for (int i = 0; i < 1000 * 1000 * 1000; i++)
{
    d += 1;
}

stopWatch.Stop();
Console.WriteLine("Time elapsed: {0:hh\\:mm\\:ss\\.fffffff}", stopWatch.Elapsed);

Stopwach находится в System.Diagnostics поэтому вам нужно добавить using System.Diagnostics; к вашему файлу.

IsHighResolution

  • Свойство IsHighResolution указывает, основан ли таймер на счетчике производительности с высоким разрешением или на основе класса DateTime.
  • Это поле доступно только для чтения.
// Display the timer frequency and resolution.
if (Stopwatch.IsHighResolution)
{
    Console.WriteLine("Operations timed using the system's high-resolution performance counter.");
}
else 
{
    Console.WriteLine("Operations timed using the DateTime class.");
}

long frequency = Stopwatch.Frequency;
Console.WriteLine("  Timer frequency in ticks per second = {0}",
    frequency);
long nanosecPerTick = (1000L*1000L*1000L) / frequency;
Console.WriteLine("  Timer is accurate within {0} nanoseconds", 
    nanosecPerTick);
}

https://dotnetfiddle.net/ckrWUo

Таймер, используемый классом секундомера, зависит от системного оборудования и операционной системы. IsHighResolution истинна, если таймер секундомера основан на счетчике производительности с высоким разрешением. В противном случае IsHighResolution является ложным, что указывает на то, что таймер секундомера основан на системном таймере.

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

Чтобы получить независимое от системы время, убедитесь, что вы используете свойства «Секундомер истек» или «Истекшие миллисекунды», которые уже учитывают значение секундомера. Частота (тики в секунду).

Секундомер всегда должен использоваться в течение Datetime для процессов синхронизации, поскольку он более легкий и использует Dateime, если он не может использовать счетчик производительности с высоким разрешением.

Источник



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow