获取函数执行时间

           获取一个函数或者一段代码的执行时间在C#中有以下几种方法。

       第一种方法(获取粗略的时间):

       DateTime startTime = DateTime.Now;//记录将要执行目标代码段的时间点
       
       //_________________要执行的函数______________________
       //Code……
       
       DateTime endTime = DateTime.Now; TimeSpan span = endTime - startTime;
       Console.WriteLine(span);


          第二种方法(获取精确的时间):

       这里需要用到C#提供的一个类StopWatch---(提供一组方法和属性,可用于准确地测量运行时间),它位于System.Diagnostics

命名空间下。

       Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
       stopwatch.Start(); //开始监视目标代码段
 
       //_________________要执行的函数______________________
       //Code……
 
       stopwatch.Stop(); //停止监视目标代码段
       TimeSpan timeSpan = stopwatch.Elapsed; //获取总时间
       double hours = timeSpan.TotalHours; //小时
       double minutes = timeSpan.TotalMinutes;  //分钟
       double seconds = timeSpan.TotalSeconds;  //秒数
       double milliseconds = timeSpan.TotalMilliseconds;  //毫秒数

         第三种方法使用Environment.TickCount属性,它返回获取系统启动后经过的毫秒数。请注意,因为它派生自系统计时器的分辨率

TickCount 属性仅限于系统计时器,它通常在 10 到 16 毫秒为单位的范围的分辨率。使用方法也是如同第一种那样分别进行记录,然

后相减即可

       第四种方法(获取高精度时间):

      [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
      static extern bool QueryPerformanceCounter(ref long PerformanceCounter); //返回高精确度性能计数器的值,用来精确计算执行时间

      [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
      static extern bool QueryPerformanceFrequency(ref long PerformanceFrequency);//返回硬件支持的高精度计数器的频率

      static void Main(string[] args)
    {
          long liPerfFreq = 0, timeStart = 0, timeEnd =0;
      QueryPerformanceFrequency(ref liPerfFreq);
      
          QueryPerformanceCounter(ref timeStart);

          //_________________要执行的函数______________________
          //Code……
          
          QueryPerformanceCounter(ref timeEnd);
          decimal result = (timeEnd - timeStart) / (decimal)liPerfFreq;
          Console.WriteLine(result);
<span style="font-family:KaiTi_GB2312;">          }</span>








阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页