Ran*_*der 91 c# performance datetime timing stopwatch
我想跟踪我的代码的性能,所以我使用了存储开始和结束时间System.DateTime.Now.我将两者之间的差异作为执行代码的时间.
我注意到差异似乎并不准确.所以我尝试使用一个Stopwatch对象.事实证明,这更加准确.
谁能告诉我为什么Stopwatch比计算开始和结束时间之间的差异更准确System.DateTime.Now?
顺便说一句,我不是说百分之十.我得到了大约15-20%的差异.
Kel*_*sey 75
根据MSDN:
秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间.如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器来测量经过的时间.否则,Stopwatch类使用系统计时器来测量经过的时间.使用Frequency和IsHighResolution字段确定秒表计时实施的精度和分辨率.
它使用更高的分辨率/精度DateTime.Now.
您还可以查看以下相关链接:
Environment.TickCount与DateTime.Now
DateTime对于第二个可能是精确到足够的,但我建议的除此之外的任何东西StopWatch.
Pav*_*dov 31
最好使用秒表类,因为它比减去DateTime值更准确:
Stopwatch s = Stopwatch.StartNew();
// Tested code here
s.Stop();
Console.WriteLine("Elapsed Time: {0} ms", s.ElapsedMilliseconds);
不幸的是,这段简单的代码不足以在大多数时间内获得准确的测量结果,因为操作系统下会进行大量的活动,这会占用一些CPU时间并减慢代码的执行速度.这就是为什么最好多次执行测试然后删除最低和最高时间.对于那个puprose,一个很好的解决方案是让一个方法多次执行测试代码,删除最低和最高时间并计算平均时间.我在博客中发布了一个示例测试方法.
| 归档时间: | 
 | 
| 查看次数: | 60029 次 | 
| 最近记录: |