首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 使用 Stopwatch 類別進行效能測試

     編輯:關於C語言

前言:為何需要精確計時

軟體效能優化需先能量測。長時間流程易測量,但頻繁呼叫的微小常式(如千分之一秒執行、百萬次呼叫)累積影響巨大,需微秒級精度工具。

Stopwatch 類別介紹 (.NET 2.0+)

  • 位於 System.Diagnostics 命名空間
  • 提供 Start()、Stop()、Reset()/Restart() 方法
  • 精度達微秒 (百萬分之一秒),遠優於 DateTime.Now
  • 底層使用高效能計數器 (QueryPerformanceCounter)

基本使用範例


using System;
using System.Diagnostics;

namespace StopWatchDemo {
    class Program {
        static void Main() {
            long total = 0;
            Stopwatch sw = Stopwatch.StartNew(); // 建立並啟動
            for (int i = 1; i <= 10_000_000; i++) total += i;
            sw.Stop();
            Console.WriteLine($"總和: {total}");
            Console.WriteLine($"耗時: {sw.ElapsedMilliseconds} ms");
            Console.WriteLine($"耗時: {sw.Elapsed.TotalSeconds:F3} 秒");
            Console.WriteLine($"耗時: {sw.ElapsedTicks} ticks");
        }
    }
}

進階用法

  • sw.Elapsed 回傳 TimeSpan,可取得時/分/秒/毫秒/微秒
  • sw.ElapsedTicks 原始計數器節拍,配合 Stopwatch.Frequency 換算秒數
  • 多段計時:Stop() 暫停,再次 Start() 繼續累積
  • Reset() 歸零,Restart() 歸零並重新啟動

最佳實務建議

  1. 測試前預熱 (JIT 編譯),第一次執行通常較慢
  2. 多次執行取平均,減少系統干擾
  3. 釋放記憶體壓力:測試區塊外避免大量配置
  4. 對比優化前後同邏輯不同實作 (如 StringBuilder vs + 串接)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved