Ricerca…


Sintassi

  • stopWatch.Start () - Avvia il cronometro.
  • stopWatch.Stop () - Interrompe il cronometro.
  • stopWatch.Elapsed - Ottiene il tempo trascorso totale misurato dall'intervallo corrente.

Osservazioni

I cronometri vengono spesso utilizzati nei programmi di benchmarking per il time code e vengono visualizzati i diversi segmenti di codice ottimali da eseguire.

Creazione di un'istanza di un cronometro

Un'istanza di cronometro può misurare il tempo trascorso su più intervalli con il tempo trascorso totale, essendo tutti gli intervalli individuali sommati tra loro. Ciò fornisce un metodo affidabile per misurare il tempo trascorso tra due o più eventi.

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 è in System.Diagnostics quindi è necessario aggiungere using System.Diagnostics; al tuo file.

IsHighResolution

  • La proprietà IsHighResolution indica se il timer è basato su un contatore di prestazioni ad alta risoluzione o basato sulla classe DateTime.
  • Questo campo è di sola lettura.
// 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

Il timer utilizzato dalla classe Cronometro dipende dall'hardware del sistema e dal sistema operativo. IsHighResolution è true se il timer del cronometro è basato su un contatore di prestazioni ad alta risoluzione. In caso contrario, IsHighResolution è false, il che indica che il timer del cronometro è basato sul timer di sistema.

Le zecche in Cronometro dipendono dalla macchina / dal sistema operativo, quindi non si dovrebbe mai contare sulla razione di zecche del cronometro in secondi per essere uguali tra due sistemi, e possibilmente anche sullo stesso sistema dopo un riavvio. Pertanto, non puoi mai contare sui tick di Cronometro per avere lo stesso intervallo dei tick DateTime / TimeSpan.

Per ottenere l'ora indipendente dal sistema, assicurati di utilizzare le proprietà Cronometro esaurite o Trascorse di millisecondi, che tengono già conto del Cronometro. Frequenza (zecche al secondo).

Il cronometro dovrebbe sempre essere utilizzato su Datetime per i processi di temporizzazione in quanto è più leggero e utilizza Dateime se non può utilizzare un contatore di prestazioni ad alta risoluzione.

fonte



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow