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

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

在 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。