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值


原文地址:https://www.cnblogs.com/lujin49/p/3629196.html