我们有很多种方法评估一个方法的执行耗时,比如使用性能分析工具,使用基准性能测试。不过传统的在代码中编写计时的方式依然有效,因为它可以生产环境或用户端得到真实环境下的执行耗时。
如果你希望在 .NET/C# 代码中编写计时,那么阅读本文可以获得一些建议。阅读本文也可以了解到 QueryPerformanceCounter
、GetSystemTimeAsFileTime
等方法的差异。
基本的计时
计时一般采用下面这种方式,在方法执行之前获取一次时间,在方法结束之后再取得一次时间。
// 在方法开始之前。
Foo();
// 在方法执行之后。
这样,前后两次获取的时间差即为方法 Foo
的执行耗时。
这里我不会提到性能测试工具或者基准性能测试这些方法,因为这些测试代码不会运行于用户端。你可以阅读以下博客获得这两者的使用:
结论:使用什么方法计时
先说结论:System.Diagnostics
命名空间下有一个 Stopwatch
类。如果你要为你方法的执行时间进行统计,那么就使用这个类。
Stopwatch
类有一些静态属性、也有一些实例方法和实例属性。此类型的时间统计是按照高性能和高精度的要求来做的,于是你可以用它获得高精度的计时效果。不过,如果你对性能要求近乎苛刻,例如你的方法会被数百万次或更高频地执行,