0

0

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

月夜之吻

月夜之吻

发布时间:2025-11-15 09:27:25

|

221人浏览过

|

来源于php中文网

原创

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 类型)

示例代码:

Designs.ai
Designs.ai

AI设计工具

下载
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# 中测量执行时间的标准做法。

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.3万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

Django 教程
Django 教程

共28课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号