Stopwatch类用于测量一段代码的运行时长,可以测量多个时间间隔的总运行时间。一般使用步骤Start() >>> DoSomething() >>> Stop(),最后使用 Elapsed 属性检查运行时间。每次Start()计算时间都要叠加前几次的运行时长
1.介绍
官网介绍:Stopwatch
1.1 属性
属性名 |
描述 |
权限 |
Frequency:long |
计时器频率 |
RO |
IsHighResolution:bool |
是否基于高分辨率性能计数器 |
RO |
Elapsed:TimeSpan |
当前实例测量得出的总运行时间 |
RO |
ElapsedMilliseconds:long |
当前实例测量得出的总毫秒数 |
RO |
IsRunning:bool |
计时器是否在运行 |
RO |
1.2方法
方法名 |
描述 |
GetTimestamp():long |
获取计时器机制中的当前最小时间单位数 |
StartNew():Stopwatch |
创建新实例,并开始计时 |
Reset() |
运行时间重置 |
Restart() |
重新计数并开始测量 |
Start() |
开始测量 |
Stop() |
停止测量 |
2.Example
2.1 简单测量
Task1:单次测量
Task2:叠加测量
Task3:重新测量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| static void Main() { Console.WriteLine("Stopwatch fist Start ..."); Stopwatch sw = new Stopwatch(); #region [第一次运行Stopwatch] sw.Start(); Thread.Sleep(5000); sw.Stop(); Console.WriteLine("Stopwatch first Stop ..."); Console.WriteLine($"Stopwatch运行时长:{sw.ElapsedMilliseconds}ms"); #endregion
#region [其他工作] Thread.Sleep(2000); Console.WriteLine("使用2秒,完成其他工作 ..."); #endregion
#region [第二次运行Stopwatch] Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("*** 第一、二次运行时长的叠加 ***"); Console.WriteLine("Stopwatch second Start ..."); sw.Start(); Thread.Sleep(1000); sw.Stop(); Console.WriteLine("Stopwatch second Stop ..."); Console.WriteLine($"Stopwatch运行时长:{sw.ElapsedMilliseconds}ms"); Console.ForegroundColor = ConsoleColor.White; #endregion
#region [第二次运行Stopwatch,重新计数] Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("*** 第三次重新计数 ***"); Console.WriteLine("Stopwatch third Start ..."); sw.Restart(); Thread.Sleep(3000); sw.Stop(); Console.WriteLine("Stopwatch third Stop ..."); Console.WriteLine($"Stopwatch运行时长:{sw.ElapsedMilliseconds}ms"); Console.ForegroundColor = ConsoleColor.White; #endregion
Console.ReadLine(); }
|
输出效果