首页 > 编程语言 >C# Stopwatch 类,测试代码运行时间

C# Stopwatch 类,测试代码运行时间

时间:2022-11-14 11:33:20浏览次数:128  
标签:Start C# 测量 测试代码 实例 时间 Stopwatch 运行

在C#中有一个秒表类Stopwatch,用这个类可以方便的测试一下代码运行时间。 在需要检测代码的duration时,总是忘记这个类,而去手写DateTime实例然后计算差值。所以,有必要记录以下以备忘。

在C#中有一个秒表类Stopwatch,用这个类可以方便的测试一下代码运行时间。   在需要检测代码的duration时,总是忘记这个类,而去手写DateTime实例然后计算差值。所以,有必要记录以下以备忘。

命名空间:System.Diagnostics

常用的方法/属性:

Start()-开始(或继续)计时

Stop()-停止计时

ElapsedMilliseconds-获取总运行时间(毫秒)

Reset()-停止时间间隔测量,并将运行时间重置为零

Restart()-停止时间间隔测量,将运行时间重置为零,然后开始测量运行时间

 

关于Start的继续计时, 在调用Stop后,再调用Start时,并不是重新计时的,而是在原来运行时间的基础上继续计时。 所以,如果要重新计时,要么重新定义一个Stopwatch实例,要么是在调用当前实例的Start前先调用Reset,要么是调用当前实例的Restart方法。

 

Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间。在典型的 Stopwatch 方案中,先调用 ​​Start​​​ 方法,然后调用 ​​Stop​​​ 方法,最后使用 ​​Elapsed​​ 属性检查运行时间。

Stopwatch 实例或者在运行,或者已停止;使用 ​​IsRunning​​ 可以确定 Stopwatch 的当前状态。使用 Start 可以开始测量运行时间;使用 Stop 可以停止测量运行时间。通过属性 Elapsed、​​ElapsedMilliseconds​​​ 或 ​​ElapsedTicks​​ 查询运行时间值。当实例正在运行或已停止时,可以查询运行时间属性。运行时间属性在 Stopwatch 运行期间稳固递增;在该实例停止时保持不变。

默认情况下,Stopwatch 实例的运行时间值相当于所有测量的时间间隔的总和。每次调用 Start 时开始累计运行时间计数;每次调用 Stop 时结束当前时间间隔测量,并冻结累计运行时间值。使用 ​​Reset​​ 方法可以清除现有 Stopwatch 实例中的累计运行时间。

Stopwatch 在基础计时器机制中对计时器的刻度进行计数,从而测量运行时间。如果安装的硬件和操作系统支持高分辨率性能的计数器,则 Stopwatch 类将使用该计数器来测量运行时间;否则,Stopwatch 类将使用系统计数器来测量运行时间。使用 ​​Frequency​​​ 和 ​​IsHighResolution​​ 字段可以确定实现 Stopwatch 计时的精度和分辨率。

Stopwatch 类为托管代码内与计时有关的性能计数器的操作提供帮助。具体说来,Frequency 字段和 ​​GetTimestamp​​ 方法可以用于替换非托管 Win32 APIQueryPerformanceFrequency 和 QueryPerformanceCounter


当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--​​buguge​​




标签:Start,C#,测量,测试代码,实例,时间,Stopwatch,运行
From: https://blog.51cto.com/u_15708799/5848608

相关文章

  • Oracle常用优化16个技巧
    1.选择最有效率的表名顺序ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表drivingtable)将被最先处理。当ORACLE处理多个表时,会......
  • 创建 SAP Fiori Catalog 时遇到的 duplicate 记录的问题分析
    我在FioriAdmin创建Catalog时遇到一个问题:错误消息如下:duplicateresourcepagex-sap-ui2-cataloguepage:SAP_HCM_BC_EMPLOYEE_X1wheniamtryingtocreateca......
  • Pentaho pan和kitchen 如何运行
    查了网上资料,无外乎如下:在CMD中切换到pdi的路径:D:\data-integration,然后输入命令:D:\data-integration>Pan.bat/file:"D:\data-integration\pdi_job\test.ktr"可是系统......
  • initContainer
    initContainer1.概述1.1初始化容器的用途Init容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码;Init容器可以安全地运行这些工具,避免这些工具导致......
  • initContainer 初始化容器
    initContainer1.概述1.1初始化容器的用途Init容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码;Init容器可以安全地运行这些工具,避免这些工具导致......
  • CF1650G 『Counting Shortcuts』 题解
    从洛谷博客那里搬过来的(图论专题本来打算先挑最简单的做,结果做了两个多小时(题意就是让你找从起点\(s\)到终点\(t\)的最短路以及次短路个数,本题次短路长度指的是最短......
  • 在django项目中再开启一个socket服务
    在django项目中再开启一个socket服务1.任意项目任意地方写一个createSocket.py文件(文件名任意)importsocketfromdjango.confimportsettingssock=socket.socket......
  • 2.CSS
    1.概述CSS就是CascadingStyleSheet的缩写,中文译作“层叠样式表”或者是“级联样式表”,是用于控制网页外观处理并允许将网页的表现与内容分离的一种标记性语言,CSS不需要......
  • Ftp连接-200 Switching to ASCII mode,227 Entering Passive Mode
      测试ftp服务器是否部署成功,最简单的方法,就是找个windows系统直连服务器,能连上就说明服务部署成功了。不过,有时候即使ftp服务部署成功了,windows系统依然连接不......
  • docker 搭建redis 集群
    一、创建6个redis节点的配置文件bind0.0.0.0port6381databases1save36001save300100save6010000dbfilenamedump6381.rdbdir./appendonlyyesa......