C# StopWatch程序性能_时间计时器
阅读原文时间:2023年07月10日阅读:1

StopWatch 时间计数器简介:

Stopwatch 可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间。一般用来测量代码执行所用的时间或者计算性能数据,在优化代码性能上可以使用Stopwatch来测量时间。

在多处理器计算机上,线程在哪个处理器上运行并不重要。 但是,由于 BIOS 中的 bug 或硬件抽象层 (HAL) ,你可以在不同的处理器上获取不同的计时结果。 若要为线程指定处理器关联,请使用 ProcessThread.ProcessorAffinity 方法。

属性:

  Elapsed       获取当前实例测量得出的总运行时间。
  ElapsedMilliseconds  获取当前实例测量得出的总运行时间(以毫秒为单位)。
  ElapsedTicks         获取当前实例测量得出的总运行时间(用计时器计时周期表示)。
  IsRunning           获取一个指示 Stopwatch 计时器是否在运行的值。

方法

  GetTimestamp      获取计时器机制中的当前最小时间单位数。
  Reset           停止时间间隔测量,并将运行时间重置为零。
  Restart          停止时间间隔测量,将运行时间重置为零,然后开始测量运行时间。
  Start            开始或继续测量某个时间间隔的运行时间。
  StartNew          对新的 Stopwatch 实例进行初始化,将运行时间属性设置为零,然后开始测量运行时间。
  Stop            停止测量某个时间间隔的运行时间。

引用的空间名:使用的时候需要引用 System.Diagnostics 命名空间。

    static void Main(string\[\] args)  
    {

        List<int> ListGeneric = new List<int> { 5, 9, 1, 4 };  
        //non-generic list  
        ArrayList ListNonGeneric = new ArrayList { 5, 9, 1, 4 };  
        // timer for generic list sort  
        Stopwatch s = Stopwatch.StartNew();

        ListGeneric.Sort();  
        s.Stop();  
        Console.WriteLine($"Generic Sort: {ListGeneric}  \\n Time taken: {s.Elapsed.TotalMilliseconds}ms");

        //timer for non-generic list sort  
        Stopwatch s2 = Stopwatch.StartNew();  
        ListNonGeneric.Sort();  
        s2.Stop();  
        Console.WriteLine($"Non-Generic Sort: {ListNonGeneric}  \\n Time taken: {s2.Elapsed.TotalMilliseconds}ms");  
        Console.ReadLine();

    }

具体教程看:https://docs.microsoft.com/zh-cn/dotnet/api/system.diagnostics.stopwatch?view=net-5.0

2、基于 Windows 的标准计时器(System.Windows.Forms.Timer)

Windows 计时器是为单线程环境设计的,这个计时器是使用最简单的一种,只要把工具箱中的Timer控件拖到窗体上,然后设置一下事件和间隔时间等属性就可以了。

3、基于服务器的计时器(System.Timers.Timer)

System.Timers.Timer不依赖窗体,是从线程池唤醒线程,是传统的计时器为了在服务器环境上运行而优化后的更新版本。

4、线程计时器(System.Threading.Timer)

线程计时器也不依赖窗体,是一种简单的、轻量级计时器,它使用回调方法而不是使用事件,并由线程池线程提供支持。

5、System.Environment.TickCount

TickCount属性用来获取来自计算机的系统计时器的毫秒计数。