zoukankan      html  css  js  c++  java
  • 【holm】C# 使用Stopwatch准确测量程序运行时间

    Stopwatch

        class Program
        {
            static void Main(string[] args)
            {
                long timestamp = Stopwatch.GetTimestamp(); //获取计时器机制中的当前刻度数
    
                long frequency = Stopwatch.Frequency;//获取以每秒刻度数表示的计时器频率
                bool isHighResolution = Stopwatch.IsHighResolution; //指示计时器是否基于高分辨率性能计数器
    
    
                 Stopwatch stopWatch = new Stopwatch();
                //等效于:
                //Stopwatch stopWatch = Stopwatch.StartNew();
    
                //开始计时
                stopWatch.Start();
                Thread.Sleep(100);  
                                  // 此时stopWatch.ElapsedMilliseconds为100
                stopWatch.Reset();//停止时间测量并将运行时间置零
                Thread.Sleep(100);
                                  // 此时stopWatch.ElapsedMilliseconds为0 
                stopWatch.Start();
                Thread.Sleep(100);
                stopWatch.Restart();//停止时间测量并将运行时间置零,再重新开始。相当于Reset再Start
                Thread.Sleep(200);
                //结束计时
                stopWatch.Stop();
    
                TimeSpan ts = stopWatch.Elapsed;//以TimeSpan结构总运行时间
                long tsm = stopWatch.ElapsedMilliseconds;//以毫秒为单位表示总运行时间
                long tst = stopWatch.ElapsedTicks;//以计时器刻度表示总运行时间
    
                //格式化TimeSpan
                string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                    ts.Hours, ts.Minutes, ts.Seconds,
                    ts.Milliseconds / 10);
    
                //输出
                Console.WriteLine("RunTime: " + elapsedTime);
                Console.WriteLine("RunTime(Millisecond): " + tsm);
                Console.WriteLine("RunTick: " + tst);
            }
        }
    

    如果 Stopwatch 类使用高分辨率性能计数器,则 GetTimestamp 返回该计数器的当前值。 如果 Stopwatch 类使用系统计时器,则 GetTimestamp 返回 DateTime.Now 实例的当前 DateTime.Ticks 属性。

    参考资料

  • 相关阅读:
    011-iOS核心动画(Core Animation)
    010-CALayer(图层)
    009-手势触摸事件处理
    008-Quartz2D
    007-多控制器管理及其控制器间的数据传递
    007-多控制器管理(控制器间的数据传递)
    通过底层 socket 监控 http/https 思路
    NDK 线程同步
    时间同步算法探究
    Android 事件小结
  • 原文地址:https://www.cnblogs.com/holm/p/12856650.html
Copyright © 2011-2022 走看看