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/iWaitYou/p/9434052.html

时间: 2024-10-04 03:15:03

C#计算一段代码的运行时间的相关文章

iOS测试一段代码的运行时间

王刚韧 23:19:26测试一段代码的运行时间 测试一段代码运行花了多久: NSDate* tmpStartData = [NSDate date] ;<#代码#> double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData]; NSLog(@"------cost time = %f ms(毫秒)", deltaTime*1000);

用GetTickCount()计算一段代码执行耗费的时间的小例子

var aNow,aThen,aTime:Longint; begin aThen := GetTickCount(); Sleep(1000);//代码段 aNow := GetTickCount(); aTime := aNow-aThen; ShowMessage(IntToStr(a)); end; 用GetTickCount()计算一段代码执行耗费的时间的小例子,布布扣,bubuko.com

测一段代码的运行时间

2017-09-1613:35:56 感觉很实用. /************************************** time ./a.out 命令所花费的real时间.user时间和sys时间. real时间是指挂钟时间,也就是命令开始执行到结束的时间. 这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间. user时间是指进程花费在用户模式中的CPU时间, 这是唯一真正用于执行进程所花费的时间, 其他进程和花费阻塞状态中的时间没有计算在内. sys时间是指花费在内

计算一段代码执行完毕用时问题

NSDate *start = [NSDate date]; //获得当前的时间 //3.代码部分 NSDate *end = [NSDate date]; //获得当前的时间 NSLog(@"%f",[end timeIntervalSinceDate:start]); 以下为第二种方式: CFTimeInterval start = CFAbsoluteTimeGetCurrent(); //2.根据url下载图片二进制数据到本地 NSData *imageData = [NSDa

【java】计算一段代码执行时长

1 public class Test_currentTimeMillis { 2 public static void main(String[] args) { 3 long start=System.currentTimeMillis(); 4 for(int i=0;i<Integer.MAX_VALUE;i++){} 5 long end=System.currentTimeMillis(); 6 System.out.println("for语句执行时长:"+(end

假设写一段代码引导PC开机这段代码是 ? Here is a tiny &amp;quot;OS&amp;quot; :-D

Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动.然后单独剥离出来,能够非常好玩~ 资料下载地址: http://download.csdn.net/detail/u011368821/8006465 原则上仅仅须要两个文件(boot.S mmu.h)就能够,可是我们这里还须要一些附带的虚拟器工具.以及makefile来做实验. 须要提示的就是地址0xb800是显存的开头地址 : ) MOVSB(MOVe String Byt

关于hrtimer_forward小段代码的分析【转】

转自:http://blog.csdn.net/wowuyinglingluan/article/details/45720151 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 整段代码 关于无效的forward 关于定时精度问题 精确调整和overrun问题 存疑 随着各种嵌入式设备上采用linux,特别是Android系统的广泛应用,linux的hrtimer高精度模式开始被广泛支持.当然,虽说可以支持到ns精度,具体实现依赖于硬件定时器和内核编译条件,不过,一般情

timeit模块 - 度量小段代码片的执行时间

官方文档: https://docs.python.org/2/library/timeit.html 源代码片: Lib/timeit.py 该模块提供了简单的方式来测量小段Python代码片.它有两种执行方式:命令行接口执行方式 和 Python程序代码可调的函数的方式. 该模块避免了很多常见的度量时间的陷进.可以参考由O'Reilly出版的Python Cookbook里面介绍算法章节. 1. 基本的例子 下面例子可以展示如果使用Command-Line Interface比较三种不同的表

如果写一段代码引导PC开机这段代码是 ? Here is a tiny &quot;OS&quot; :-D

Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他根据MIT的JOS的boot.S 稍作修改,然后单独剥离出来,可以很好玩~ 资料下载地址: http://download.csdn.net/detail/u011368821/8006465 原则上只需要两个文件(boot.S mmu.h)就可以,但是我们这里还需要一些附带的虚拟器工具,以及makefile来做实验. 需要提示的就是地址0xb800是显存的开头地址 : ) MOVSB(MOVe String Byte)