C# Stopwatch
原文地址:点击查看原文
1 namespace System.Diagnostics
2 {
3 //
4 // 摘要:
5 // 提供一组方法和属性,可用于准确地测量运行时间。
6 public class Stopwatch
7 {
8 //
9 // 摘要:
10 // 获取以每秒计时周期数表示的计时器频率。此字段为只读。
11 public static readonly long Frequency;
12 //
13 // 摘要:
14 // 指示计时器是否基于高分辨率性能计数器。此字段为只读。
15 public static readonly bool IsHighResolution;
16
17 //
18 // 摘要:
19 // 初始化 System.Diagnostics.Stopwatch 类的新实例。
20 public Stopwatch();
21
22 //
23 // 摘要:
24 // 获取当前实例测量得出的总运行时间。
25 //
26 // 返回结果:
27 // 一个只读的 System.TimeSpan,用于表示当前实例测量得出的总运行时间。
28 public TimeSpan Elapsed { get; }
29 //
30 // 摘要:
31 // 获取当前实例测量得出的总运行时间(以毫秒为单位)。
32 //
33 // 返回结果:
34 // 一个只读长整型,表示当前实例测量得出的总毫秒数。
35 public long ElapsedMilliseconds { get; }
36 //
37 // 摘要:
38 // 获取当前实例测量得出的总运行时间(用计时器计时周期表示)。
39 //
40 // 返回结果:
41 // 一个只读长整型,表示当前实例测量得出的计时器计时周期的总数。
42 public long ElapsedTicks { get; }
43 //
44 // 摘要:
45 // 获取一个指示 System.Diagnostics.Stopwatch 计时器是否在运行的值。
46 //
47 // 返回结果:
48 // 如果 System.Diagnostics.Stopwatch 实例当前正在运行,并且在对某个时间间隔的运行时间进行测量,则该值为 true;否则为 false。
49 public bool IsRunning { get; }
50
51 //
52 // 摘要:
53 // 获取计时器机制中的当前最小时间单位数。
54 //
55 // 返回结果:
56 // 一个长整型,表示基础计时器机制中的计时周期计数器值。
57 public static long GetTimestamp();
58 //
59 // 摘要:
60 // 对新的 System.Diagnostics.Stopwatch 实例进行初始化,将运行时间属性设置为零,然后开始测量运行时间。
61 //
62 // 返回结果:
63 // 刚刚开始测量运行时间的 System.Diagnostics.Stopwatch。
64 public static Stopwatch StartNew();
65 //
66 // 摘要:
67 // 停止时间间隔测量,并将运行时间重置为零。
68 public void Reset();
69 //
70 // 摘要:
71 // 停止时间间隔测量,将运行时间重置为零,然后开始测量运行时间。
72 public void Restart();
73 //
74 // 摘要:
75 // 开始或继续测量某个时间间隔的运行时间。
76 public void Start();
77 //
78 // 摘要:
79 // 停止测量某个时间间隔的运行时间。
80 public void Stop();
81 }
82 }
Stopwatch的命名空间是using System.Diagnostics;
从上文看到Restart()等于Reset()加Start()
使用流程如下
1 Stopwatch sw = new Stopwatch();
2 //开始计时
3 sw.Start();
4 //重新设置为零
5 sw.Reset();
6 //重新设置并开始计时
7 sw.Restart();
8 //结束计时
9 sw.Stop();
10 //获取运行时间间隔
11 TimeSpan ts = sw.Elapsed;
12 //获取运行时间[毫秒]
13 long times = sw.ElapsedMilliseconds;
14 //获取运行的总时间
15 long times2 = sw.ElapsedTicks;
16 //判断计时是否正在进行[true为计时]
17 bool isrun = sw.IsRunning;
18 //获取计时频率
19 long frequency = Stopwatch.Frequency;
Stopwatch 在基础计时器机制中对计时器的计时周期进行计数,从而测量运行时间。 如果安装的硬件和操作系统支持高分辨率性能计数器,则 Stopwatch 类将使用该计数器来测量运行时间; 否则,Stopwatch 类将使用系统计数器来测量运行时间。 使用 Frequency 和 IsHighResolution 字段可以确定实现 Stopwatch 计时的精度和分辨率。
TimeSpan 对象表示时间间隔或持续时间,按正负天数、小时数、分钟数、秒数以及秒的小数部分进行度量。用于度量持续时间的最大时间单位是天。更大的时间单位(如月和年)的天数不同,因此为保持一致性,时间间隔以天为单位来度量。
TimeSpan 对象的值是等于所表示时间间隔的刻度数。一个刻度等于 100 纳秒,TimeSpan 对象的值的范围在 MinValue 和 MaxValue 之间。
TimeSpan 值可以表示为 [-]d.hh:mm:ss.ff,其中减号是可选的,它指示负时间间隔,d 分量表示天,hh 表示小时(24 小时制),mm 表示分钟,ss 表示秒,而 ff 为秒的小数部分。即,时间间隔包括整的正负天数、天数和剩余的不足一天的时长,或者只包含不足一天的时长。例如,初始化为 1.0e+13 刻度的 TimeSpan 对象的文本表示“11.13:46:40”,即 11 天,13 小时,46 分钟和 40 秒。