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

2025-05-27 0 64

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

一、前言

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

二、Linux下精确至毫秒

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
#include <sys/time.h>

#include <iostream>

#include <time.h>

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<<"循环耗时为:"<<end_time-start_time<<"ms";

return 0;

}

三、Windows下精确至毫秒

?

1

2

3

4

5

6

7

8

9

10

11

12

13
#include <windows.h>

#include <iostream>

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下精确至微秒

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58
//MyTimer.h//

#ifndef __MyTimer_H__

#define __MyTimer_H__

#include <windows.h>

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 <iostream>

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)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C++实现统计代码运行时间计时器的简单实例 https://www.kuaiidc.com/74364.html

相关文章

发表评论
暂无评论