C#使用Stopwatch获取程序毫秒级执行时间的方法
在 C# 开发中,若需以毫秒级精度衡量某段代码的执行效率,推荐使用 System.Diagnostics.Stopwatch 类。相比传统的 DateTime 计算差值法,此方法不仅精度更高,且 API 更为直观简洁。
为什么选择 Stopwatch
DateTime 获取的是系统当前时刻,受系统时钟波动和闰秒影响较大,难以捕捉微秒或毫秒级的短暂差异。而 Stopwatch 基于硬件计数器(通常关联高性能计数器),能提供更稳定的时间测量基准,非常适合用于局部逻辑的性能测试。
操作步骤
第1步:引入命名空间
Stopwatch 位于 System.Diagnostics 命名空间下。使用前需在文件顶部添加引用:
using System.Diagnostics;
第2步:实例化并开始计时
创建 Stopwatch 对象并调用 Start() 方法启动计数器。这标志着你需要测量的代码段起始点:
Stopwatch sw = new Stopwatch();
sw.Start();
第3步:执行待测代码
在此处放置需要监控运行时间的业务逻辑或算法代码:
// 需要统计时间的代码段
int result = 0;
for (int i = 0; i < 100000; i++) {
result += i;
}
第4步:停止计时并读取结果
代码执行完毕后,调用 Stop() 停止计数。此时可以通过以下属性获取时间数据:
ElapsedMilliseconds:返回总流逝时间(毫秒数),通常用于最终展示。Elapsed:返回一个TimeSpan对象,包含小时、分钟、秒和毫秒等详细信息。
获取毫秒数值示例如下:
sw.Stop();
long milliseconds = sw.ElapsedMilliseconds;
// 在实际应用中,可使用 Console.WriteLine 或 Response.Write 输出
注意事项
- 释放资源:单次使用后,建议调用
sw.Reset()重置计时器,以便复用该对象进行下一次测试,避免累积误差。 - 环境差异:
Stopwatch的精度依赖于底层硬件支持。在极少数不支持高性能计数器的环境中,它会自动退化为DateTime.Ticks,精度随之降低。 - JIT 优化:在发布模式(Release)下进行测试时,编译器可能会优化掉未使用的代码块,导致计时时间为 0。确保待测代码对后续逻辑有实际影响或使用
VolatileRead防止优化。
以上就是 C# 使用 Stopwatch 获取程序毫秒级执行时间的详细内容,更多关于 C# 性能优化的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









