C#的Stopwatch类是什么?如何精确地测量代码执行时间?

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

c#的stopwatch类是什么?如何精确地测量代码执行时间?

Stopwatch 是 C# 中用于精确测量代码执行时间的类,位于 System.Diagnostics 命名空间下。它基于系统高精度性能计数器,比使用 DateTime.Now 更加准确,特别适合用来做性能测试、代码段耗时分析等场景。

Stopwatch 的工作原理

Stopwatch 利用系统的高分辨率性能计数器(如果可用),通过 CPU 的周期或硬件计时器来记录时间,因此精度远高于毫秒级的 DateTime。它不会受到系统时间调整(如用户修改时间、NTP 同步)的影响。

如何使用 Stopwatch 测量代码执行时间

基本使用步骤如下:

调用 Stopwatch.StartNew() 创建并启动计时器运行要测量的代码调用 Stopwatch.Stop() 停止计时通过 Elapsed 属性获取总耗时(TimeSpan 类型)

示例代码:

using System;using System.Diagnostics;

var stopwatch = Stopwatch.StartNew();// 模拟一段耗时操作for (int i = 0; i < 1000000; i++){Math.Sqrt(i);}stopwatch.Stop();

Console.WriteLine($"耗时: {stopwatch.ElapsedMilliseconds} 毫秒");Console.WriteLine($"更精确时间: {stopwatch.Elapsed.TotalSeconds:F6} 秒");

常用属性和方法

Start() / Stop():手动控制启停Reset():重置计时器(时间归零)Restart():重置并重新开始Elapsed:返回 TimeSpan,表示总耗时ElapsedMilliseconds:以 long 返回毫秒数ElapsedTicks:返回计时器滴答数(不是 DateTime 的 Ticks)

提高测量准确性的小技巧

多次运行取平均值,避免单次测量受 GC、系统调度等干扰在 Release 模式下测试,Debug 模式会影响性能避免在测量期间进行无关操作(如打印日志)可配合 GC.Collect() 和 GC.WaitForPendingFinalizers() 预先清理垃圾,减少干扰

示例:多次测量取平均

var times = new List();for (int i = 0; i < 10; i++){    var sw = Stopwatch.StartNew();    // 要测试的方法    MyMethod();    sw.Stop();    times.Add(sw.ElapsedMilliseconds);}

double avg = times.Average();Console.WriteLine($"平均耗时: {avg:F2} 毫秒");

基本上就这些。Stopwatch 简单高效,是 C# 中测量执行时间的标准做法。

以上就是C#的Stopwatch类是什么?如何精确地测量代码执行时间?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 18:17:52
下一篇 2025年12月17日 18:18:20

相关推荐

发表回复

登录后才能评论
关注微信