码迷,mamicode.com
首页 > Windows程序 > 详细

C#计算一段代码的运行时间

时间:2018-08-06 23:20:33      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:extern   datetime   frequency   mil   seconds   enc   ram   for   return   

第一种方法利用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";
   }

  

C#计算一段代码的运行时间

标签:extern   datetime   frequency   mil   seconds   enc   ram   for   return   

原文地址:https://www.cnblogs.com/iWaitYou/p/9434052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!