在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(); } } }运行结果如图:
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册