System.Diagnostics.Stopwatch的准确度如何?我正在尝试为不同的代码路径做一些指标,我需要它准确.我应该使用秒表还是有其他更准确的解决方案.
我被告知有时秒表会提供不正确的信息.
我刚刚写了一篇文章,解释了如何通过测试设置来获得秒表的高精度(优于0.1ms).我认为应该解释一切.
http://www.codeproject.com/KB/testing/stopwatch-measure-precise.aspx
System.Diagnostics.Stopwatch类可以准确地测量经过的时间,但是ElapsedTicks方法的工作方式使得一些人得出的结论是,当他们的代码中只有一个逻辑错误时,它不准确.
一些开发人员认为秒表不准确的原因是秒表的ElapsedTicks不等于DateTime中的Ticks.当应用程序代码使用ElapsedTicks创建新的DateTime时,会出现问题.
var watch = new Stopwatch(); watch.Start(); ... (perform a set of operations) watch.Stop(); var wrongDate = new DateTime(watch.ElapsedTicks); // This is the WRONG value.
如有必要,可以通过以下方式将秒表持续时间转换为DateTime:
// This converts stopwatch ticks into DateTime ticks. // First convert to TimeSpan, then convert to DateTime var rightDate = new DateTime(watch.Elapsed.Ticks);
这篇文章更详细地解释了这个问题:http: //geekswithblogs.net/BlackRabbitCoder/archive/2012/01/12/c.net-little-pitfalls-stopwatch-ticks-are-not-timespan-ticks. ASPX