C# sub миллисекундное время

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

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

timeSpan.TotalMilliseconds / 10

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

5 ответов


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


использовать System.Diagnostics.Stopwatch


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

после этого вы можете отрегулировать и легко измерить.


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

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


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

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, но я не знаю, есть ли какие-либо задержки производительности, поэтому я сначала извлекаю его и помещаю в переменную.