Windows/Linux高精度计时器(C++)

/* 
 * Linux/Windows 系统高精度计时器 
 */
  
#ifndef __LX_TIMER_H__  
#define __LX_TIMER_H__  
  
#ifdef WIN32  
    #include 
  
  
   
     
#elif linux  
    #include 
   
   
    
      
#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
   
   
  
  

#include "LxTimer.h"  
  
#ifdef  WIN32  
    #include 
  
  
   
     
#elif  linux  
    #include 
   
   
    
      
#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
   
   
  
  


 
 
 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值