0%

Stopwatch使用

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();
}

输出效果

简单测试