计时类

#include <ctime>
#include <windows.h>

namespace std { using ::clock_t; using ::clock; }


// 计时类 (单位为秒, 精确到毫秒)

class utime
{
public:
 //开始计时
 utime(): _start_time(std::clock()){}
 void restart() { _start_time = std::clock(); }
 double elapsed() const{ return  double(std::clock() - _start_time) / CLOCKS_PER_SEC; }
 double operator()() const { return elapsed(); }
private:
 std::clock_t  _start_time;
}; // end of stopwatch class


// 高精度计时类 (单位为秒, 精确到微秒)

class uutime
{
public:
 typedef __int64 value_type;
 // 获得计数器的时钟频率
 uutime(): freq( frequency() ){ restart(); }
 // 获得初始值
 void restart() { start_time = counter(); }
 // 获得对应的时间值,单位为秒
 double elapsed() const { return static_cast<double>( (double)(counter() - start_time)/freq); }
 double operator()() const { return elapsed(); }
 
private:
 value_type  start_time, freq;
 static value_type frequency()
 {
  value_type  frequency;
  ::QueryPerformanceFrequency(reinterpret_cast<LARGE_INTEGER*>(&frequency));
  return frequency;
 }
 static value_type counter()
 {
  value_type  counter;
  ::QueryPerformanceCounter(reinterpret_cast<LARGE_INTEGER*>(&counter));
  return counter;
 }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值