C# sub миллисекундное время
есть ли где-нибудь в C# для выполнения операций синхронизации с точностью до миллисекунды? Я помещаю код синхронизации в свое программное обеспечение, и все возвращается как 0ms. Я хотел бы знать, есть ли способ получить еще более тонкую гранулярность.
добавление: это правильный код для получения субмиллисекундного времени?
timeSpan.TotalMilliseconds / 10
Я все еще получаю 0 как затраченное время
5 ответов
вы всегда можете попробовать использовать QueryPerformanceCounter или секундомер класс для управляемого подхода
обычно я измеряю такие сценарии, повторяя операцию несколько раз (столько, сколько необходимо, чтобы получить миллисекунды более нескольких десятков или сотен.
после этого вы можете отрегулировать и легко измерить.
вы можете попробовать измерить свою производительность в течение тиков вместо миллисекунд. Это будет гораздо точнее с точки зрения производительности.
но я согласен с Сэмом и Тиранидом, используйте систему.Диагностика.секундомер.
я узнал кое-что новое. Эти клещи действительно удобны. Пример:
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
, но я не знаю, есть ли какие-либо задержки производительности, поэтому я сначала извлекаю его и помещаю в переменную.