zoukankan      html  css  js  c++  java
  • 计时器

    Timer.h

    #ifndef __LX_TIMER_H__  
    #define __LX_TIMER_H__  
      
    #ifdef WIN32  
        #include <Windows.h>  
    #elif linux  
        #include <sys/time.h>  
    #endif  
      
    class LxTimer  
    {  
    public:  
        LxTimer();  
        void   start();  
        double stop();   // 返回从 start 到 stop 所经历的时间(单位:秒)  
      
    private:  
    #ifdef  WIN32  
        double dSystemFreq;   
        BOOL   flag;  
        double dStartTime;  
        double dStopTime;  
    #elif  linux  
        struct timeval tvStart;  
        struct timeval tvStop;  
    #endif  
    };  
      
    #endif

    Timer.cpp

    #include "stdafx.h"
    #include "timer.h"  
     
    #ifdef  WIN32  
    #include <Windows.h>  
    #elif  linux  
    #include <sys/time.h>  
    #endif  
      
    #ifdef WIN32  
    LxTimer::LxTimer()  
    {  
        LARGE_INTEGER sysFreq;  // 计时器频率  
        flag = QueryPerformanceFrequency( &sysFreq );  
        if ( flag )  
        {  
            dSystemFreq = (double)sysFreq.QuadPart;  
        }  
    }  
      
    void LxTimer::start()  
    {  
        LARGE_INTEGER t;  
        flag &= QueryPerformanceCounter( &t );  
        if ( !flag )  
            return;  
        dStartTime = (double)t.QuadPart;  
    }  
      
    double LxTimer::stop()  
    {  
        LARGE_INTEGER t;  
        flag &= QueryPerformanceCounter( &t );  
      
        if ( !flag )  
            return -1.0;  
          
        dStopTime = (double)t.QuadPart;  
        return ( dStopTime - dStartTime ) / dSystemFreq;  
    }  
      
    #elif  linux  
      
    LxTimer::LxTimer(){}  
      
    void LxTimer::start()  
    {  
        gettimeofday( &tvStart, NULL );  
    }  
      
    double LxTimer::stop()  
    {  
        gettimeofday( &tvStop, NULL );  
        return (double)(tvStop.tv_sec - tvStart.tv_sec)  
            + (double)(tvStop.tv_usec - tvStart.tv_usec)/1000000.0;  
    }  
      
    #endif
  • 相关阅读:
    绑定方法与与绑定方法
    组合 多态 封装
    继承
    面向对象
    函数进阶
    文件操作
    字符编码
    python基本数据类型及操作
    IDEA 错误: 找不到符号
    Spring+MVC Controller层接收App端请求的中文参数乱码问题。
  • 原文地址:https://www.cnblogs.com/wangchenggen/p/3933005.html
Copyright © 2011-2022 走看看