buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

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

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

命名空间:System.Diagnostics

常用的方法/属性:

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

Stop()-停止计时

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

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

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

 

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

 

以下来自博客园:http://www.cnblogs.com/zhw511006/archive/2009/07/22/1528405.html 

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

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

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

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

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

posted on 2015-10-19 18:50  buguge  阅读(303)  评论(0编辑  收藏  举报