新闻中心

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

2025-11-15
浏览次数:
返回列表
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 类型)

示例代码:

Reachout.ai Reachout.ai

一个AI驱动的视频开发平台,专为忙碌的企业家和销售团队打造

Reachout.ai 142 查看详情 Reachout.ai
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类是什么?如何精确地测量代码执行时间?的详细内容,更多请关注其它相关文章!


# 相关文章  # 大川seo搜索矩阵  # 运城seo云优化  # 青岛网站优化哪家收费低  # seo推广选择火星  # SEO行业基金经理工资  # 衡水网站建设方案书  # 南沙网站seo优化  # 山东seo推广成功案例  # 营销推广如何提升营业额  # 云平台网站推广  # 中文网  # 代码性能  # 模式下  # 迭代  # 均值  # 重试  # 不安全  # 计时器  # 执行时间  # 性能测试  # ai  # c# 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  Composer如何解决json扩展缺失的错误  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略  如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  文心一言怎样用批量生成做多版文案_文心一言用批量生成做多版文案【批量创作】  苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】  利用Bokeh CustomJS动态控制DataTable列可见性  zookeeper 都有哪些功能?  Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】  苹果手机如何防止被恶意App追踪  学习通网页版快速入口 学习通官网网页版直接打开  《GTA6》开发画面疑似泄露!这次可不是AI了  绝地鸭卫平a核爆刀流玩法攻略  蛙漫官方正版入口 蛙漫网页在线全集免费观看  在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  Golang并发任务中错误如何聚合_Golang goroutine error收集方式  怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法  Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  excel怎么制作工资条 excel快速生成工资条的方法  谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版  Win11输入法不见了怎么办_Windows11恢复语言栏显示方法  MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复  PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践  QQ网页版官方账号入口 QQ网页版网页版登录指南  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  J*a 递归快速排序中静态变量的状态管理与陷阱  Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  解决Flask中Quill编辑器内容提交失败及TypeError的指南  AO3网页版最新入口合集 Archive of Our Own在线访问指南  漫画星球免费下拉式入口 漫画星球免费漫画在线阅读网站  圆通快递查询实时追踪 圆通物流包裹状态快速查看  利用5118提升短视频内容效果_5118短视频关键词优化方法  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略  C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略  高德地图怎么看全景照片_高德地图全景照片浏览教程  押井守高度称赞《辐射4》:玩了八年都停不下来!  TypeScript/J*aScript:高效查找数组中首个唯一ID对象  Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】  将HTML动态表格多行数据保存到Google Sheet的教程  文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  126邮箱账号注册 电脑版登录入口 

搜索