C#使用Stopwatch获取程序毫秒级执行时间的方法

宋时安
宋时安
发布时间:2026-10-13 | 6人浏览过
原创

在 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# 性能优化的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表