1、Stopwatch简介
1)命名空间
using System.Diagnostics;
2)字段
字段 | 字段说明 |
Frequency | 获取以每秒刻度数表示的计时器频率。 此字段为只读。 |
IsHighResolution | 指示计时器是否基于 高分辨率性能计数器 。 此字段为只读。 |
3)属性
属性 | 属性说明 |
Elapsed | 获取当前实例测量得出的总运行时间。 |
ElapsedMilliseconds | 获取当前实例测量得出的总运行时间 (以毫秒为单位)。 |
ElapsedTicks | 获取当前实例测量得出的总运行时间 (用计时器刻度表示)。 |
IsRunning | 获取一个值, 该值表示 Stopwatch 计时器是否正在运行。 |
4)方法
方法 | 方法说明 |
Equals(Object) | 确定指定对象是否等于当前对象。 |
GetHashCode() | 作为默认哈希函数。 |
GetTimestamp() | 获取计时器机制中的当前刻度数。 |
GetType() | 获取当前实例的 Type。 |
MemberwiseClone() | 创建当前 Object 的浅表副本。 |
Reset() | 停止时间间隔测量,并将运行时间重置为零。 |
Restart() | 停止时间间隔测量,将运行时间重置为零, 然后开始测量运行时间。 |
Start() | 开始或继续测量某个时间间隔的运行时间。 |
StartNew() | 初始化新的 Stopwatch 实例, 将运行时间属性设置为零,然后开始测量运行时间。 |
Stop() | 停止测量某个时间间隔的运行时间。 |
ToString() | 返回表示当前对象的字符串。 |
2、Stopwatch的使用
Stopwatch
类相关字段、属性、方法的使用示例,可以参考代码如下,
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace ConsoleApplication { class Program { static void Main(string[] args) { //创建Stopwatch实例 Stopwatch sw = new Stopwatch(); //开始计时 sw.Start(); for (int i = 0; i < 100; i++) { Console.WriteLine(i); } //停止计时 sw.Stop(); Console.WriteLine("用时:" + sw.ElapsedMilliseconds + ""); //重置 停止时间间隔测量,并将运行时间重置为0 sw.Reset(); Console.WriteLine("用时:" + sw.ElapsedMilliseconds + ""); //重启 停止时间间隔测量,并将运行时间重置为0,然后重新开始 测量运行时间 sw.Restart(); for (int i = 0; i < 100; i++) { Console.WriteLine(i); } sw.Stop(); //获取当前实例测量得出的总运行时间(以毫秒为单位) Console.WriteLine("用时:" + sw.ElapsedMilliseconds + ""); //获取当前实例测量得出的总运行时间 Console.WriteLine("用时:" + sw.Elapsed); //获取当前实例测量得出的总运行时间(用计时器刻度表示)。 Console.WriteLine(sw.ElapsedTicks); Console.Read(); //开始计时 sw.Start(); System.Threading.Thread.Sleep(1000); //耗时操作 测试代码,休眠1000毫秒 //结束计时 sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); //输出:消耗的毫秒 Console.WriteLine(sw.Elapsed.ToString()); //输出:时:分:秒 //重置秒表 sw.Reset(); Console.WriteLine("Reset End"); //再次开始计时,或者直接用**Restart**函数直接重置并开始 sw.Start(); System.Threading.Thread.Sleep(1200); //第二次计时结束 sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); if (Stopwatch.IsHighResolution) { Console.WriteLine("使用系统的高分辨率性能计数器的计时的操作."); } else { Console.WriteLine("使用DateTime类的计时操作."); } long frequency = Stopwatch.Frequency; Console.WriteLine("计时器频率,以滴答/秒为单位 = {0}", frequency); long nanosecPerTick = (1000L * 1000L * 1000L) / frequency; Console.WriteLine("计时器在{0}纳秒以下范围内准确", nanosecPerTick.ToString()); } } }