2010-09-24 1 views
5

Jaki jest najwygodniejszy sposób dokładnego pomiaru czasu, który upłynął zegar ścienny w .NET? W miarę możliwości szukam czegoś z dokładnością do mikrosekundy (10^-6 sekund).Dokładnie zmierzono czas, jaki upłynął zegar ścienny w .NET

+2

Czy upłynął "czas zegara ściennego" odpowiadający upływowi czasu? – spender

+0

@spender: [Czas zegara ściennego] (http://pl.wikipedia.org/wiki/Wall_clock_time) to łączny czas potrzebny do ukończenia zadania. –

+0

Ah. OK, w przeciwieństwie do czasu procesora. Mam to teraz. – spender

Odpowiedz

7

System.Diagnostics.Stopwatch to Twój najlepszy zakład. Dokładna dokładność zależy jednak od sprzętu na komputerze, z którego korzystasz, tzn. Od tego, czy jest dostępny licznik wydajności o wysokiej rozdzielczości. (Można sprawdzić, że z pola IsHighResolution.)

wykorzystanie próbki:

Stopwatch sw = Stopwatch.StartNew(); 
// Do stuff here 
sw.Stop(); 
TimeSpan time = sw.Elapsed; 

Należy pamiętać, że w przypadku korzystania z własności ElapsedTicks, która jest mierzona w zegarem kleszcze, które nie jest taki sam jak używany kleszcze w DateTime i TimeSpan. To mnie wcześniej zaskoczyło - dlatego zawsze używam właściwości ElapsedMilliseconds lub Elapsed.

+0

To wygląda idealnie. W moim systemie pole 'Frequency' ma rozdzielczość lepszą niż jedna dziesiąta mikrosekundy. – pauldoo