.NET Stopwatch - performance penalty
Possible Duplicates:
Is DateTime.Now the best way to measure a function's performance?
Stopwatch vs. using System.DateTime.Now for timing events
号
我有代码需要尽可能快地运行。为了能够记录执行时间,我使用了秒表类。我想,秒表可能会对表演造成不良影响。也许使用日期时间差异更有效?
你认为哪一个性能更好?
1 2 3 4 5 6 7 | Stopwatch sw = new Stopwatch(); sw.Start(); int a = 5; // Critical lines of code long elapsedMs = se.Elapsed.TotalMilliseconds; |
或
1 2 3 4 5 6 | DateTime startDate = DateTime.Now; int a = 5; // Critical lines of code long elapsedMs = DateTime.Now.Subtract(startDate).TotalMilleseconds; |
号
型
型
因为您的分析代码只执行一次,所以它的性能影响应该可以忽略不计。只有在内部循环/关键代码路径中调用秒表时才会出现问题。
理论上,这种抖动可能会有一些影响,但这不太可能。
型
答案真的取决于你想要达到的精度。对于大于秒的精度,秒表是一种更好的方法,因为它使用的测量系统比日期时间更精确。请参阅http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx
从性能的角度来看,我怀疑在查看start()和datetime的方式方面存在很大的差异。现在,存储来自相应测量系统的值,当检索毫秒数时,它计算出差异并将(根据需要)转换为相应的测量单位。
型
我不认为你只打几次电话真的很重要,但是,每件事都取决于你要求的准确程度;
型
我认为就性能而言,第二个更有效,正如注释中的链接所指出的,如果您想测量秒以下的时间,那么日期时间将不准确,尽管它是有效的。
我认为是这样的,因为秒表将连续地测量计时周期,与只保存一个日期时间实例(即starttime)的datetime相比。