• C# 图像处理:记录图像处理时间的一个类


        class HiPerTimer
        {
    
            [DllImport("user32.dll")]
            static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
    
            /// <summary>
            /// 最后一次输入的时间间隔,静态函数,不用实例化即可调用
            /// </summary>
            /// <returns>返回时间长度</returns>
            public static long GetLastInputTime()
            {
                LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
                vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
                if (!GetLastInputInfo(ref vLastInputInfo)) return 0;
                return Environment.TickCount - (long)vLastInputInfo.dwTime;
            }
    
    
    
            /// <summary>
            /// 引用 win32 API 中的QueryPerformanceCounter()方法
            /// </summary>
            /// <param name="lpPerformanceCount"></param>
            /// <returns>该方法用来查询任意时刻高精度计数器的实际值</returns>
            [DllImport("Kernel32.dll")]
            private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);
            
            
            /// <summary>
            /// 引用 win32 API 中的QueryPerformanceFrequency()方法
            /// </summary>
            /// <param name="lpFrequency">每秒的计数值</param>
            /// <returns>返回高精度计数器每秒的计数值</returns>
            [DllImport("Kernel32.dll")]
            private static extern bool QueryPerformanceFrequency(out long lpFrequency);
    
            private long starTime, stopTime;
            private long freq;
            public HiPerTimer()
            {
                starTime = 0;
                stopTime = 0;
                QueryPerformanceFrequency(out freq);
                //{
                    
                //}
            }
    
    
    
            public void Start()
            {
                //让等待线程工作
                Thread.Sleep(0);
                stopTime = 0;
                QueryPerformanceCounter(out starTime);
            }
    
            public void Stop()
            {
                QueryPerformanceCounter(out stopTime);
            }
    
    
            public double DurationMs
            {
                get {
                    return (double)((stopTime - starTime) * 1000 / (double)freq);
    
                }
            }
    
    
        }

    有两个部分一个是 最后输入时间函数  一个是运行时间函数,单位为ms

    使用方法:

    一  距最后输入(鼠标或是键盘)的时间间隔

    HiPerTimer.GetLastInputTime(); //单位为ms

    二 两次操作的时间,即一个操作所运行的时间
    HiPerTimer timer = new HiPerTimer();


    在开始操作之前,先启动 timer.Start();
    操作完成后,timer.Stop();

    此操作的时间为 timer.DurationMs 返回的是ms值


  • 相关阅读:
    DELPHI加密字串(异或运算加密)
    delphi 浮点数float转换成十六进制字符串的方法(FloatToHex)
    delphi 浮点数转换成十六进制字符串的方法
    LRC CRC 纵向冗余码校验
    lrc 校验码 ascii 格式
    LRC的效验码的计算方法
    写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
    CRC的校验原理
    CRC校验
    RTU模式与ASCII模式有什么不同
  • 原文地址:https://www.cnblogs.com/lujin49/p/3629196.html
Copyright © 2020-2023  润新知