新闻中心
C#的Stopwatch类是什么?如何精确地测量代码执行时间?
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类是什么?如何精确地测量代码执行时间?的详细内容,更多请关注其它相关文章!
# 相关文章
# 大川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邮箱账号注册 电脑版登录入口


2025-11-15
浏览次数:次
返回列表