Szukaj…


Składnia

  • stopWatch.Start () - Uruchamia stoper.
  • stopWatch.Stop () - Zatrzymuje stoper.
  • stopWatch.Elapsed - Pobiera całkowity upływ czasu mierzony przez bieżący interwał.

Uwagi

Stopery są często używane w programach porównawczych do kodowania czasu i sprawdzania, jak działają optymalne różne segmenty kodu.

Tworzenie wystąpienia stopera

Instancja Stopwatch może mierzyć upływ czasu w kilku przedziałach, przy czym całkowity czas, który upłynął, jest sumą wszystkich poszczególnych przedziałów. Daje to niezawodną metodę pomiaru upływu czasu między dwoma lub więcej zdarzeniami.

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 jest w System.Diagnostics więc musisz dodać using System.Diagnostics; do twojego pliku.

IsHighResolution

  • Właściwość IsHighResolution wskazuje, czy licznik czasu jest oparty na liczniku wydajności wysokiej rozdzielczości, czy na klasie DateTime.
  • To pole jest tylko do odczytu.
// 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

Czasomierz używany przez klasę Stopwatch zależy od sprzętu i systemu operacyjnego. IsHighResolution ma wartość true, jeśli stoper jest oparty na liczniku wydajności o wysokiej rozdzielczości. W przeciwnym razie IsHighResolution ma wartość false, co oznacza, że stoper jest oparty na zegarze systemowym.

Typy w Stoper są zależne od maszyny / systemu operacyjnego, dlatego nigdy nie powinieneś liczyć na to, że racje Stopwatch będą liczone w sekundach, aby były takie same między dwoma systemami, a być może nawet w tym samym systemie po ponownym uruchomieniu. Dlatego nigdy nie można liczyć na to, że tiki Stopwatch będą miały taki sam interwał jak tiki DateTime / TimeSpan.

Aby uzyskać czas niezależny od systemu, należy użyć właściwości Elapsed lub ElapsedMilliseconds stopera, które już uwzględniają Stopwatch. Częstotliwość (tyknięcia na sekundę).

Stoper powinien być zawsze używany w czasie Datetime do procesów pomiaru czasu, ponieważ jest bardziej lekki i używa Dateime, jeśli nie może używać licznika wydajności o wysokiej rozdzielczości.

Źródło



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow