C# 我的代码运行需要多长时间?
我怎样才能知道我的C#代码运行需要多少时间?查看该课程。该课程在.NET中提供了高精度计时。它能够测量时间,灵敏度约为100纳秒(毫秒的分数)。要获得准确的分辨率,请读取的值 此外,确保反复运行代码(尽可能多次),以获得更好的平均时间,并减少CPU负载波动的影响。查看课程: 正如其他人所说,课堂对于简单的时间安排是有好处的。但要记住的其他方面:C# 我的代码运行需要多长时间?,c#,benchmarking,performance,C#,Benchmarking,Performance,我怎样才能知道我的C#代码运行需要多少时间?查看该课程。该课程在.NET中提供了高精度计时。它能够测量时间,灵敏度约为100纳秒(毫秒的分数)。要获得准确的分辨率,请读取的值 此外,确保反复运行代码(尽可能多次),以获得更好的平均时间,并减少CPU负载波动的影响。查看课程: 正如其他人所说,课堂对于简单的时间安排是有好处的。但要记住的其他方面: 您的代码可能会生成在停止秒表后需要进行垃圾收集的对象 相反,您的计时可能包括正在垃圾收集的其他对象,即使它们与您的代码无关 如果您在第一次运行方法之前
- 您的代码可能会生成在停止秒表后需要进行垃圾收集的对象
- 相反,您的计时可能包括正在垃圾收集的其他对象,即使它们与您的代码无关
- 如果您在第一次运行方法之前开始计时,它将包括JIT时间
- 如果你花很短的时间,那会导致非常不可预测的结果——对于基准测试,我倾向于运行代码几秒钟,以考虑应用程序被其他进程中断等
如果您对基准测试感兴趣,我有一个项目,我必须在某个时候重新开始工作-这不是我想要的结果,但这是一个开始。我将在中详细介绍我希望通过它实现的功能。我建议使用分析工具,例如测试应用程序的速度并查找速度较慢的代码。这将允许您对执行时间进行逐行测试。如果您想要简单,只需在其周围放置一个N-迭代循环,并使用秒表(或手表)除以N。例如,如果您想要微秒,则设N=1000000。如果您担心循环的开销,只需将其展开10倍。个人感谢MiniBench,Jon-它已成为我的宝贵工具。@C罗杰斯:您可能比我当时使用得更多!我真的会在以后的某个时候再谈的。。。不过,目前写作已经占据了主导地位:(
var timer = System.Diagnostics.Stopwatch.StartNew();
// Run code here.
var elapsed = timer.ElapsedMilliseconds.
Stopwatch sw = new Stopwatch();
sw.Start();
// your code here
sw.Stop();
TimeSpan elapsedTime = sw.Elapsed;