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";
        }

  

转载于:https://www.cnblogs.com/zhao-yi/p/6225962.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值