StopWatch(秒表)詳解


 
namespace System.Diagnostics  
{  
    //  
    // 摘要:  
    //     提供一組方法和屬性,可用於准確地測量運行時間。  
    public class Stopwatch  
    {  
        //  
        // 摘要:  
        //     獲取以每秒計時周期數表示的計時器頻率。此字段為只讀。  
        public static readonly long Frequency;  
        //  
        // 摘要:  
        //     指示計時器是否基於高分辨率性能計數器。此字段為只讀。  
        public static readonly bool IsHighResolution;  
  
        //  
        // 摘要:  
        //     初始化 System.Diagnostics.Stopwatch 類的新實例。  
        public Stopwatch();  
  
        //  
        // 摘要:  
        //     獲取當前實例測量得出的總運行時間。  
        //  
        // 返回結果:  
        //     一個只讀的 System.TimeSpan,用於表示當前實例測量得出的總運行時間。  
        public TimeSpan Elapsed { get; }  
        //  
        // 摘要:  
        //     獲取當前實例測量得出的總運行時間(以毫秒為單位)。  
        //  
        // 返回結果:  
        //     一個只讀長整型,表示當前實例測量得出的總毫秒數。  
        public long ElapsedMilliseconds { get; }  
        //  
        // 摘要:  
        //     獲取當前實例測量得出的總運行時間(用計時器計時周期表示)。  
        //  
        // 返回結果:  
        //     一個只讀長整型,表示當前實例測量得出的計時器計時周期的總數。  
        public long ElapsedTicks { get; }  
        //  
        // 摘要:  
        //     獲取一個指示 System.Diagnostics.Stopwatch 計時器是否在運行的值。  
        //  
        // 返回結果:  
        //     如果 System.Diagnostics.Stopwatch 實例當前正在運行,並且在對某個時間間隔的運行時間進行測量,則該值為 true;否則為 false。  
        public bool IsRunning { get; }  
  
        //  
        // 摘要:  
        //     獲取計時器機制中的當前最小時間單位數。  
        //  
        // 返回結果:  
        //     一個長整型,表示基礎計時器機制中的計時周期計數器值。  
        public static long GetTimestamp();  
        //  
        // 摘要:  
        //     對新的 System.Diagnostics.Stopwatch 實例進行初始化,將運行時間屬性設置為零,然后開始測量運行時間。  
        //  
        // 返回結果:  
        //     剛剛開始測量運行時間的 System.Diagnostics.Stopwatch。  
        public static Stopwatch StartNew();  
        //  
        // 摘要:  
        //     停止時間間隔測量,並將運行時間重置為零。  
        public void Reset();  
        //  
        // 摘要:  
        //     停止時間間隔測量,將運行時間重置為零,然后開始測量運行時間。  
        public void Restart();  
        //  
        // 摘要:  
        //     開始或繼續測量某個時間間隔的運行時間。  
        public void Start();  
        //  
        // 摘要:  
        //     停止測量某個時間間隔的運行時間。  
        public void Stop();  
    }  
}  

Stopwatch的命名空間是using System.Diagnostics;

從上文看到Restart()等於Reset()加Start()

使用流程如下

Stopwatch sw = new Stopwatch();  
//開始計時  
sw.Start();  
//重新設置為零  
sw.Reset();  
//重新設置並開始計時  
sw.Restart();  
//結束計時  
sw.Stop();  
//獲取運行時間間隔  
TimeSpan ts = sw.Elapsed;  
//獲取運行時間[毫秒]  
long times = sw.ElapsedMilliseconds;  
//獲取運行的總時間  
long times2 = sw.ElapsedTicks;  
//判斷計時是否正在進行[true為計時]  
bool isrun = sw.IsRunning;  
//獲取計時頻率  
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 秒。

舉個例子

Stopwatch sw = new Stopwatch();  
//開始計時  
sw.Start();  
  
//5.SqlQuery()查詢  
var sql = "select * from UserInfo where age > 15 order by age desc";  
object[] obj = new object[1];  
var info = db.UserInfo.SqlQuery(sql, obj);  
  
foreach (var item in info)  
{  
    richTextBox1.Text += "姓名:" + item.Name + " 年齡:" + item.Age + "\n";  
}  
                  
//結束計時  
sw.Stop();  
//獲取運行時間[毫秒]  
long times = sw.ElapsedMilliseconds;  
richTextBox1.Text += "執行查詢總共使用了" + times + "毫秒";  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM