Suche…


Syntax

  • stopWatch.Start () - Startet die Stoppuhr.
  • stopWatch.Stop () - Stoppt die Stoppuhr.
  • stopWatch.Elapsed - Ruft die vom aktuellen Intervall gemessene Gesamtzeit ab.

Bemerkungen

Stoppuhren werden häufig in Benchmarking-Programmen verwendet, um Zeitcode einzugeben und zu sehen, wie optimal unterschiedliche Codesegmente für die Ausführung sind.

Instanz einer Stoppuhr erstellen

Eine Stoppuhr-Instanz kann die abgelaufene Zeit über mehrere Intervalle hinweg messen, wobei die gesamte abgelaufene Zeit alle einzelnen Intervalle addiert. Dies gibt eine zuverlässige Methode zum Messen der verstrichenen Zeit zwischen zwei oder mehr Ereignissen.

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 ist in System.Diagnostics Sie müssen also using System.Diagnostics; hinzufügen using System.Diagnostics; in Ihre Datei.

IsHighResolution

  • Die IsHighResolution-Eigenschaft gibt an, ob der Timer auf einem Leistungsindikator mit hoher Auflösung oder auf der DateTime-Klasse basiert.
  • Dieses Feld ist schreibgeschützt.
// 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

Der von der Stoppuhrklasse verwendete Timer hängt von der Systemhardware und dem Betriebssystem ab. IsHighResolution ist true, wenn der Stoppuhr-Timer auf einem Leistungsindikator mit hoher Auflösung basiert. Andernfalls ist IsHighResolution false, was bedeutet, dass der Stoppuhr-Timer auf dem Systemzeitgeber basiert.

Ticks in Stoppuhr sind maschinen- / betriebssystemabhängig. Daher sollten Sie sich nicht darauf verlassen, dass Stoppuhr-Ticks in Sekunden zwischen zwei Systemen gleich sind und nach einem Neustart möglicherweise sogar auf demselben System. Daher können Sie niemals darauf zählen, dass Stoppuhr-Ticks dasselbe Intervall wie DateTime / TimeSpan-Ticks sind.

Um systemunabhängige Zeiten zu erhalten, verwenden Sie die Eigenschaften Elapsed oder ElapsedMilliseconds der Stoppuhr, bei denen die Stoppuhr.Frequenz (Ticks pro Sekunde) bereits berücksichtigt wird.

Die Stoppuhr sollte immer über Datetime für Timing-Prozesse verwendet werden, da sie leichter ist und mit Dateime arbeitet, wenn kein Leistungszähler mit hoher Auflösung verwendet werden kann.

Quelle



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow