Frage

Gibt es irgendwo in C # Timing-Operationen mit Sub-Millisekunden-Genauigkeit durchzuführen? Ich setze Timing Code in meiner Software und alles als 0ms zurückgegeben wird. Ich würde gerne wissen, ob es einen Weg gibt noch feinere Körnung zu bekommen.

Nachtrag: ist dies der richtige Code Sub-Millisekunden-Timing zu bekommen

?
timeSpan.TotalMilliseconds / 10

Ich bin noch immer 0 als die verstrichene Zeit

War es hilfreich?

Lösung

Sie können immer versuchen, oder Queryperformancecounter die Stoppuhr Klasse für einen verwalteten Ansatz

Andere Tipps

Verwenden System.Diagnostics.Stopwatch

Normalerweise messe ich diese Art von Szenarien, die durch die Operation mehrere Male wiederholt (so viele wie nötig, um die Millisekunden über ein paar Dutzend zu bekommen oder hundert.

Dann können Sie einstellen und leichter messen.

Sie könnten versuchen, Ihre Leistung in der Angelegenheit von Ticks statt Millisekunden gemessen wird. Es wird viel genauer in Bezug auf die Leistung sein.

aber ich stimme mit Sam und Tyraniden, Verwendung System.Diagnostics.Stopwatch.

ich etwas Neues gelernt. Diese Ticks sind in der Tat praktisch. Komplettes Beispiel:

Stopwatch stopwatch = Stopwatch.StartNew();

// Run code to get duration of

long durationInTicks = stopwatch.ElapsedTicks;
Console.WriteLine($"Duration: {(decimal)durationInTicks / TimeSpan.TicksPerMillisecond:f3}ms");

Sie können auch stopwatch.ElapsedTicks innerhalb des Console.WriteLine verwenden, aber ich weiß nicht, ob das irgendwelche Leistungsverzögerungen hat, deshalb habe ich es zuerst abrufen und in einer Variablen setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top