C#中有多種方法可以實現(xiàn)“統(tǒng)計”功能。 此處使用3種精度較高的組件演示,。
統(tǒng)計延時1s,,實際精度。
Thread.Sleep(1000)
1,、DataTime
通過 DateTime 獲取時間日期,,記錄 Thread.Sleep(1000) 執(zhí)行前后的時間日期,再取兩時間日期差值,,獲取時間間隔,。
以下兩種方法均可獲取時間間隔 TimeSpan
TimeSpan abs = end.Subtract(start).Duration(); //方法1,時間差的絕對值
TimeSpan abs = end - start; //方法2,,時間差的絕對值
2,、SpanTime
通過TimeSpan獲取時間刻度,記錄 Thread.Sleep(1000) 執(zhí)行前后的時間刻度,,再取兩時間刻度差值,,獲取時間間隔。
TimeSpan start = new TimeSpan(DateTime.Now.Ticks); //獲取當(dāng)前時間的刻度數(shù)
System.Threading.Thread.Sleep(1000);
TimeSpan end = new TimeSpan(DateTime.Now.Ticks); //獲取當(dāng)前時間的刻度數(shù)
TimeSpan abs = end.Subtract(start).Duration(); //時間差的絕對值
Console.WriteLine(string.Format("程序執(zhí)行時間:{0}", abs.TotalMilliseconds));
3,、StopWatch
C# 提供的計時組件 Stopwatch 較為直觀的看到 起始點(Restart) 與 停止點(Stop) 間的時間間隔,。
提供的接口中:
ElapsedMilliseconds : 可直接得到 long 型的毫秒數(shù)據(jù)
ElapsedTicks : 需要與計數(shù)周期 Stopwatch.Frequency 搭配,可得到小數(shù)部分,,或者long型的微秒數(shù)據(jù)
注意:由于pc主機,,主頻不同,電腦同時運行的軟件不同,,且使用的windows非實時系統(tǒng),,故測試時,sleep存在誤差,。