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

      

  • 相关阅读:
    个人阅读作业
    软件工程基础/个人项目1
    个人阅读作业3
    个人阅读作业2
    代码复审
    软件工程:结对编程1
    个人阅读作业
    软工作业1:单词统计
    有关敏捷开发的一点感想[110617班 刘耀先]
    Pair Project: Elevator Scheduler [电梯调度算法的实现和测试][关于电梯调度算法的附加思考]:刘耀先-11061183,罗凡-11061174
  • 原文地址:https://www.cnblogs.com/ZaraNet/p/9434052.html
Copyright © 2020-2023  润新知