C#/.NET应用程序如何精确测量一个方法执行所花费的时间--Stopwatch类可以帮助你完成

C#开发 2015-09-01 5101阅读 0评论 0收藏 收藏本文

在C#/.NET应用程序中如何测量一个方法执行所花费的时间?这个问题的答案有多种,今天给大家介绍.NET中的Stopwatch类,这个类是.NET 2.0中新增的。用它可准确地测量运行时间。Stopwatch类位于System.Diagnostics命名空间。对于Stopwatch类使用的几个说明:

  1.Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间。在典型的 Stopwatch 方案中,先调用 Start 方法,然后调用 Stop 方法,最后使用 Elapsed 属性检查运行时间。 2.Stopwatch 实例或者在运行,或者已停止;使用 IsRunning 可以确定 Stopwatch 的当前状态。使用 Start 可以开始测量运行时间;使用 Stop 可以停止测量运行时间。通过属性 Elapsed、ElapsedMilliseconds 或 ElapsedTicks 查询运行时间值。当实例正在运行或已停止时,可以查询运行时间属性。运行时间属性在 Stopwatch 运行期间稳固递增;在该实例停止时保持不变。 3. 默认情况下,Stopwatch 实例的运行时间值相当于所有测量的时间间隔的总和。每次调用 Start 时开始累计运行时间计数;每次调用 Stop 时结束当前时间间隔测量,并冻结累计运行时间值。使用 Reset 方法可以清除现有 Stopwatch 实例中的累计运行时间。 4.Stopwatch 在基础计时器机制中对计时器的刻度进行计数,从而测量运行时间。如果安装的硬件和操作系统支持高分辨率性能的计数器,则 Stopwatch 类将使用该计数器来测量运行时间;否则,Stopwatch 类将使用系统计数器来测量运行时间。使用 Frequency 和 IsHighResolution 字段可以确定实现 Stopwatch 计时的精度和分辨率。 5.Stopwatch 类为托管代码内与计时有关的性能计数器的操作提供帮助。具体说来,Frequency 字段和 GetTimestamp 方法可以用于替换非托管 Win32 API QueryPerformanceFrequency 和 QueryPerformanceCounter。
下面是一个简单的记录应用中一个方法执行用时的示例:
using System;
using System.Threading;
//请注意,需要引入Stopwatch的命名空间System.Diagnostics
using System.Diagnostics;

namespace StopwatchConsoleDemo
{
  class Program
  {
    static void Main()
    {
      // 创建Stopwatch的实例
      Stopwatch stopwatch = new Stopwatch();

      // 开始计时
      stopwatch.Start();

      // 这里是你的方法
      for (int i = 0; i < 1000; i++)
      {
        //模拟程序处理
        Thread.Sleep(5);
      }

      // 停止计时
      stopwatch.Stop();

      // 输出计时结果
      Console.WriteLine("执行用时: {0}", stopwatch.Elapsed);
      Console.ReadKey();
    }
  }
}
运行结果如图: stopwatch-console-demo

转载请注明:图享网 » C#/.NET应用程序如何精确测量一个方法执行所花费的时间--Stopwatch类可以帮助你完成

文章评论

获取验证码