分享

C#中如何统计程序执行时间

 枫中眸zc 2022-01-10

测试
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)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多