zoukankan      html  css  js  c++  java
  • 每天学习一点.net(3)利用Stopwatch 监视程序的运行时间

    命名空间:System.Diagnostics

    Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间。在典型的 Stopwatch 方案中,先调用 Start 方法,然后调用 Stop 方法,最后使用 Elapsed 属性检查运行时间。

    Stopwatch 实例或者在运行,或者已停止;使用 IsRunning 可以确定 Stopwatch 的当前状态。使用 Start 可以开始测量运行时间;使用 Stop 可以停止测量运行时间。通过属性 ElapsedElapsedMillisecondsElapsedTicks 查询运行时间值。当实例正在运行或已停止时,可以查询运行时间属性。运行时间属性在 Stopwatch 运行期间稳固递增;在该实例停止时保持不变。

    其中Elapsed 表现形式为:00:00:00.0000004

    ElapsedMilliseconds单位为毫秒

    ElapsedTicks为Stopwatch的计时周期

    默认情况下,Stopwatch 实例的运行时间值相当于所有测量的时间间隔的总和。每次调用 Start 时开始累计运行时间计数;每次调用 Stop 时结束当前时间间隔测量,并冻结累计运行时间值。使用 Reset 方法可以清除现有 Stopwatch 实例中的累计运行时间。

    Stopwatch 在基础计时器机制中对计时器的刻度进行计数,从而测量运行时间。如果安装的硬件和操作系统支持高分辨率性能的计数器,则 Stopwatch 类将使用该计数器来测量运行时间;否则,Stopwatch 类将使用系统计数器来测量运行时间。使用 FrequencyIsHighResolution 字段可以确定实现 Stopwatch 计时的精度和分辨率。

    Stopwatch 类为托管代码内与计时有关的性能计数器的操作提供帮助。具体说来,Frequency 字段和 GetTimestamp 方法可以用于替换非托管 Win32 API QueryPerformanceFrequencyQueryPerformanceCounter

    以下是利用Stopwatch监视线程池中两个线程同步情况的例子:

    using System;
    using System.Threading;
    using System.Diagnostics;
    
    public class program
    {
        public static void Main()
        {
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
    
           System.Threading.ThreadPool.QueueUserWorkItem(Work,5);
           Thread.Sleep(2000);
           Console.WriteLine("main thread ends after 2000");
           stopwatch.Stop();
           Console.WriteLine("endtime is  "+stopwatch.ElapsedMilliseconds.ToString());
           Console.ReadLine();
     
        }
        public static void Work(object state)
        {
            Console.WriteLine("state is {0}",state);
            Thread.Sleep(1000);
            Console.WriteLine("1000");
    
            Thread.Sleep(2500);
            Console.WriteLine("2500");
        }
    
    }
  • 相关阅读:
    [SQL Basics] Indexes
    [DS Basics] Data structures
    [Algorithm Basics] Search
    [Algorithm Basics] Sorting, LinkedList
    [Java Basics] multi-threading
    [Java Basics] Reflection
    [Java Basics] Collection
    SSH basics
    纯css实现三角形
    2015年百度实习生前端笔试题上海卷a
  • 原文地址:https://www.cnblogs.com/marsblog/p/3135612.html
Copyright © 2011-2022 走看看