C#計算一段程序運行時間的三種方法


第一種方法利用System.DateTime.Now:

static void SubTest()
{ 
  DateTime beforDT = System.DateTime.Now; 

  //耗時巨大的代碼 

  DateTime afterDT = System.DateTime.Now; 
  TimeSpan ts = afterDT.Subtract(beforDT); 
  Console.WriteLine("DateTime總共花費{0}ms.", ts.TotalMilliseconds); 
}

第二種用Stopwatch類(System.Diagnostics):

static void SubTest()
{ 
  Stopwatch sw = new Stopwatch(); 
  sw.Start(); 

  //耗時巨大的代碼 

  sw.Stop(); 
  TimeSpan ts2 = sw.Elapsed; 
  Console.WriteLine("Stopwatch總共花費{0}ms.", ts2.TotalMilliseconds); 
}

第三種用API實現:

[System.Runtime.InteropServices.DllImport("Kernel32.dll")] 
static extern bool QueryPerformanceCounter(ref long count); 
[System.Runtime.InteropServices.DllImport("Kernel32.dll")] 
static extern bool QueryPerformanceFrequency(ref long count); 
static void SubTest()
{ 
  long count = 0; 
  long count1 = 0; 
  long freq = 0; 
  double result = 0; 
  QueryPerformanceFrequency(ref freq); 
  QueryPerformanceCounter(ref count); 

  //耗時巨大的代碼 

  QueryPerformanceCounter(ref count1); 
  count = count1 - count; 
  result = (double)(count) / (double)freq; 
  Console.WriteLine("QueryPerformanceCounter耗時: {0} 秒", result); 
}

也可以使用委托對其進行封裝,方便調用:

     /// <summary>
        /// 計算時間
        /// </summary>
        /// <param name="function">要被執行的代碼</param>
        /// <returns>執行這一段代碼耗時,單位:毫秒</returns>
        public static string Stopwatch(Action function)
        {
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Start();

            //開始執行業務代碼
            function();

            sw.Stop();
            TimeSpan timeSpan = sw.Elapsed;

            return (timeSpan.TotalMilliseconds) + "ms";
        }

  


免責聲明!

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



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