C#中有多种方法可以实现“统计”功能。 此处使用3种精度较高的组件演示。
统计延时1s,实际精度。
Thread.Sleep(1000)
1、DataTime
通过 DateTime 获取时间日期,记录 Thread.Sleep(1000) 执行前后的时间日期,再取两时间日期差值,获取时间间隔。
以下两种方法均可获取时间间隔 TimeSpan
TimeSpan abs = end.Subtract(start).Duration(); //方法1,时间差的绝对值
TimeSpan abs = end - start; //方法2,时间差的绝对值
2、SpanTime
通过TimeSpan获取时间刻度,记录 Thread.Sleep(1000) 执行前后的时间刻度,再取两时间刻度差值,获取时间间隔。
TimeSpan start = new TimeSpan(DateTime.Now.Ticks); //获取当前时间的刻度数
System.Threading.Thread.Sleep(1000);
TimeSpan end = new TimeSpan(DateTime.Now.Ticks); //获取当前时间的刻度数
TimeSpan abs = end.Subtract(start).Duration(); //时间差的绝对值
Console.WriteLine(string.Format("程序执行时间:{0}", abs.TotalMilliseconds));
3、StopWatch
C# 提供的计时组件 Stopwatch 较为直观的看到 起始点(Restart) 与 停止点(Stop) 间的时间间隔。
提供的接口中:
ElapsedMilliseconds : 可直接得到 long 型的毫秒数据
ElapsedTicks : 需要与计数周期 Stopwatch.Frequency 搭配,可得到小数部分,或者long型的微秒数据
注意:由于pc主机,主频不同,电脑同时运行的软件不同,且使用的windows非实时系统,故测试时,sleep存在误差。
示例代码(访问密码:1666)