我想跟踪代码的性能,因此我使用来存储开始时间和结束时间System.DateTime.Now。我将两者之间的差异作为执行代码的时间。
System.DateTime.Now
我注意到,尽管差异似乎并不准确。所以我尝试使用一个Stopwatch对象。事实证明,这要准确得多。
Stopwatch
谁能告诉我为什么Stopwatch比使用来计算开始和结束时间之间的差会更准确System.DateTime.Now?
顺便说一句,我说的不是十分之一。我大约有15-20%的差异。
根据MSDN:
秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类将使用该计数器来测量经过的时间。否则,秒表类将使用系统计时器来测量经过的时间。使用Frequency和IsHighResolution字段来确定秒表计时实现的精度和分辨率。
它使用的分辨率/精度高于DateTime.Now。
DateTime.Now
DateTime足够精确到秒,但是我推荐的以外的任何东西StopWatch。
DateTime
StopWatch