2010-06-09 16 views
7

Sto provando a testare qualche codice. Sto usando un cronometro. Quando emetto il numero di millisecondi mi dice sempre 0 quindi ho pensato di provare il numero di tick. Sto vedendo che il numero di zecche è di circa 20 000 a 30 000. Guardando il MSDN a TimeSpan.TicksPerMillisecond dice che è 10 000 tick per millisecondo. In tal caso, perché i millisecondi trascorsi sul mio cronometro non appaiono come 2 o 3?Perché ElapsedTicks X 10 000 non è uguale a ElapsedMilliseconds per il cronometro di .Net?

Cosa mi manca? Ho persino prodotto il risultato sulla stessa riga. Questo è quello che ottengo.

Time taken: 26856 ticks, 0 ms 

Ed è costante.

MODIFICA (Aggiunta del codice) Questo è il mio codice che ho eseguito in un ciclo. Mi rendo conto che sto creando un nuovo cronometro ogni volta che non è molto efficiente, ma non vedo come potrebbe distorcere i miei risultati. Grazie ragazzi

Dim SW = New Stopwatch() 
SW.Reset() 
SW.Start() 
MethodCall() 
SW.Stop() 
Console.WriteLine(String.Format("Time to increase counters: {0} ticks, {1} ms", SW.ElapsedTicks, SW.ElapsedMilliseconds)) 
+0

Forse potresti postare un esempio operativo completo? –

+1

Per favore pubblica il tuo codice reale, piuttosto che una semplice descrizione e l'output. –

+0

Aggiunto un po 'di codice. – uriDium

risposta

10

Stopwatch ticks diversi da DateTime zecche.

La lunghezza di un Stopwatch tick dipende dalla frequenza di cronometro (un tick è di un secondo divisa per la frequenza, come descritto in the MSDN documentation for Stopwatch.ElapsedTicks.

Si potrebbe sostenere che Stopwatch.ElapsedTicks era una pessima scelta di un nome per questo proprietà a causa della possibilità di confusione con i tick DateTime. Avrei preferito qualcosa come ElapsedRawTicks o qualche altro qualificatore aggettivo adatto per suggerire che questi non sono ticks standard

+0

Oh, stavo usando TimeSpan.TicksPerMillisecond. Grazie per il link. – uriDium

0

Assicurarsi che si sta effettivamente iniziando una Stopwatch e che si sta utilizzando Stopwatch.ElapsedMilliseconds o Stopwatch.Elapsed.TotalMilliseconds.

Problemi correlati