C # суб миллисекунды - PullRequest
       24

C # суб миллисекунды

8 голосов
/ 09 февраля 2010

Есть ли где-нибудь в C # операции по синхронизации с точностью до миллисекунды? Я помещаю временной код в свое программное обеспечение, и все возвращается как 0 мс. Я хотел бы знать, есть ли способ получить еще более тонкую гранулярность.

Приложение: это правильный код для получения времени менее миллисекунды?

timeSpan.TotalMilliseconds / 10

Я все еще получаю 0 как истекшее время

Ответы [ 5 ]

16 голосов
/ 09 февраля 2010

Вы всегда можете попробовать использовать QueryPerformanceCounter или StopWatch для управляемого подхода

11 голосов
/ 09 февраля 2010

Использование System.Diagnostics.Stopwatch

3 голосов
/ 09 февраля 2010

Обычно я измеряю подобные сценарии, повторяя операцию несколько раз (столько, сколько нужно, чтобы получить миллисекунды за несколько десятков или сотен.

Тогда вы можете отрегулировать и измерить более легко.

1 голос
/ 04 сентября 2017

Я узнал что-то новое. Эти клещи действительно удобны. Полный пример:

Stopwatch stopwatch = Stopwatch.StartNew();

// Run code to get duration of

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

Вы также можете использовать stopwatch.ElapsedTicks внутри Console.WriteLine, но я не знаю, есть ли какие-либо задержки с производительностью, поэтому я сначала извлекаю его и помещаю в переменную.

1 голос
/ 09 февраля 2010

Вы можете попробовать измерить вашу производительность в считанные тики, а не в миллисекундах. Это будет намного точнее с точки зрения производительности.

но я согласен с Сэмом и Тиранидом, используйте System.Diagnostics.StopWatch.

...