我是一个新手,但我正在编写一个在C#中处理字符串的小程序,我注意到如果我做了一些不同的事情,代码执行得更快.
所以我想知道,你如何计算代码的执行速度?有没有(免费)公用事业?您是否采用System.Timer的老式方式自行完成?
您所描述的内容称为性能分析.您可以使用许多程序来执行此操作,例如Jetbrains profiler或Ants profiler,尽管大多数程序会在测量其性能的过程中降低您的应用程序速度.
要手动滚动自己的性能分析,可以使用System.Diagnostics.Stopwatch和一个简单的Console.WriteLine,就像您描述的那样.
还要记住,C#JIT编译器根据调用的类型和频率优化代码,因此请使用不同大小和方法的循环,例如递归调用,以了解哪种方法效果最佳.
来自RedGate的ANTS Profiler是一个非常好的性能分析器.来自JetBrains的dotTrace Profiler也很棒.通过这些工具,您可以查看可以在每条线上钻取的性能指标.
Scree拍摄的ANTS Profiler: ANTS http://www.red-gate.com/products/ants_profiler/images/app/timeline_calltree3.gif
如果您想确保特定方法在单元测试期间保持在特定的性能阈值内,我将使用Stopwatch
该类在循环中多次监视方法的执行时间并计算平均值,然后计算Assert
结果.
只是提醒一下 - 确保在Relase中编译,而不是Debug!(我看到经验丰富的开发人员犯了这个错误 - 很容易忘记).