zoukankan      html  css  js  c++  java
  • 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值


  • 相关阅读:
    iOS tableHeaderView有默认高度?
    flutter 自定义tabbar 给tabbar添加背景功能
    jar各个版本号的意义
    【转载】springboot + swagger
    分表需要解决的问题 & 基于MyBatis 的轻量分表落地方案
    解决Spring Boot中,通过filter打印post请求的 request body 问题
    SpringBoot自动配置xxxAutoConfiguration 的使用
    Shell
    Spring踩坑记录
    Spring中可复用工具类&&特性记录&&技巧
  • 原文地址:https://www.cnblogs.com/lujin49/p/3629196.html
Copyright © 2011-2022 走看看