c++ 准确计时_C++实现统计代码运行时间计时器的简单实例

C++实现统计代码运行时间计时器的简单实例

一、前言

这里记下从网上找到的一些自己比较常用的C++计时代码

二、Linux下精确至毫秒

#include

#include

#include

double get_wall_time()

{

struct timeval time ;

if (gettimeofday(&time,NULL)){

return 0;

}

return (double)time.tv_sec + (double)time.tv_usec * .000001;

}

int main()

{

unsigned int t = 0;

double start_time = get_wall_time()

while(t++<10e+6);

double end_time = get_wall_time()

std::cout<

return 0;

}

三、Windows下精确至毫秒

#include

#include

int main()

{

DWORD start, stop;

unsigned int t = 0;

start = GetTickCount();

while (t++ < 10e+6);

stop = GetTickCount();

printf("time: %lld ms\n", stop - start);

return 0;

}

试验中,发现貌似getTickCount函数会有10几毫秒的误差,囧。。。

四、Windows下精确至微秒

//MyTimer.h//

#ifndef __MyTimer_H__

#define __MyTimer_H__

#include

class MyTimer

{

private:

int _freq;

LARGE_INTEGER _begin;

LARGE_INTEGER _end;

public:

long costTime; // 花费的时间(精确到微秒)

public:

MyTimer()

{

LARGE_INTEGER tmp;

QueryPerformanceFrequency(&tmp);//QueryPerformanceFrequency()作用:返回硬件支持的高精度计数器的频率。

_freq = tmp.QuadPart;

costTime = 0;

}

void Start() // 开始计时

{

QueryPerformanceCounter(&_begin);//获得初始值

}

void End() // 结束计时

{

QueryPerformanceCounter(&_end);//获得终止值

costTime = (long)((_end.QuadPart - _begin.QuadPart) * 1000000 / _freq);

}

void Reset() // 计时清0

{

costTime = 0;

}

};

#endif

//main.cpp

#include "MyTimer.h"

#include

int main()

{

MyTimer timer;

unsigned int t = 0;

timer.Start();

while (t++ < 10e+5);

timer.End();

std::cout << "耗时为:" << timer.costTime << "us";

return 0 ;

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值