C#的Stopwatch类是什么?如何精确地测量代码执行时间?
发布时间:2025-11-15 09:27
发布者:网络
浏览次数:Stopwatch是C#中用于精确测量代码执行时间的类,位于System.Diagnostics命名空间下,基于系统高精度性能计数器,比DateTime.Now更准确,适合性能测试和耗时分析。它通过StartNew()启动、Stop()停止,Elapsed属性获取总耗时,ElapsedMilliseconds返回毫秒数。常用方法包括Start、Stop、Reset、Restart等。为提高准确性,建议在Release模式下多次运行取平均值,并避免GC等因素干扰。示例显示了单次和多次测量的实现方式,是C#中标准的时间测量方案。

Stopwatch 是 C# 中用于精确测量代码执行时间的类,位于 System.Diagnostics 命名空间下。它基于系统高精度性能计数器,比使用 DateTime.Now 更加准确,特别适合用来做性能测试、代码段耗时分析等场景。
Stopwatch 的工作原理
Stopwatch 利用系统的高分辨率性能计数器(如果可用),通过 CPU 的周期或硬件计时器来记录时间,因此精度远高于毫秒级的 DateTime。它不会受到系统时间调整(如用户修改时间、NTP 同步)的影响。
如何使用 Stopwatch 测量代码执行时间
基本使用步骤如下:
- 调用 Stopwatch.StartNew() 创建并启动计时器
- 运行要测量的代码
- 调用 Stopwatch.Stop() 停止计时
- 通过 Elapsed 属性获取总耗时(TimeSpan 类型)
示例代码:
Reachout.ai
一个AI驱动的视频开发平台,专为忙碌的企业家和销售团队打造
142
查看详情
using System;
using System.Diagnostics;
<p>var stopwatch = Stopwatch.StartNew();
// 模拟一段耗时操作
for (int i = 0; i < 1000000; i++)
{
Math.Sqrt(i);
}
stopwatch.Stop();</p><p>Console.WriteLine($"耗时: {stopwatch.ElapsedMilliseconds} 毫秒");
Console.WriteLine($"更精确时间: {stopwatch.Elapsed.TotalSeconds:F6} 秒");</p>常用属性和方法
- Start() / Stop():手动控制启停
- Reset():重置计时器(时间归零)
- Restart():重置并重新开始
- Elapsed:返回 TimeSpan,表示总耗时
- ElapsedMilliseconds:以 long 返回毫秒数
- ElapsedTicks:返回计时器滴答数(不是 DateTime 的 Ticks)
提高测量准确性的小技巧
- 多次运行取平均值,避免单次测量受 GC、系统调度等干扰
- 在 Release 模式下测试,Debug 模式会影响性能
- 避免在测量期间进行无关操作(如打印日志)
- 可配合 GC.Collect() 和 GC.WaitForPendingFinalizers() 预先清理垃圾,减少干扰
示例:多次测量取平均
var times = new List<long>();
for (int i = 0; i < 10; i++)
{
var sw = Stopwatch.StartNew();
// 要测试的方法
MyMethod();
sw.Stop();
times.Add(sw.ElapsedMilliseconds);
}
<p>double *g = times.Average();
Console.WriteLine($"平均耗时: {*g:F2} 毫秒");</p>基本上就这些。Stopwatch 简单高效,是 C# 中测量执行时间的标准做法。
以上就是C#的Stopwatch类是什么?如何精确地测量代码执行时间?的详细内容,更多请关注其它相关文章!
# 代码性能
# c#
# ai
# 性能测试
# 执行时间
# 计时器
# 不安全
# 重试
# 均值
# 迭代
# 模式下
# 相关文章
# 中文网
# 云平台网站推广
# 营销推广如何提升营业额
# 山东seo推广成功案例
# 南沙网站seo优化
# 衡水网站建设方案书
# SEO行业基金经理工资
# seo推广选择火星
# 青岛网站优化哪家收费低
# 运城seo云优化
# 大川seo搜索矩阵




