博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Window中C++进行精确计时的方法
阅读量:4948 次
发布时间:2019-06-11

本文共 1011 字,大约阅读时间需要 3 分钟。

嗯,程序员一个永恒的追求就是性能吧?

为了衡量性能,自然需要计时。

奈何无论C标准库还是C++标准库,因为通用性的考虑,其time API精度都不高。基本都是毫秒级的。

所以如果要真正精确地衡量程序的性能,还是得靠系统API。下面的计时方式可以精确到<1us

 

如果不想了解什么原理,可以直接拷走下面这个简易计时器类。放在一个头文件里,用的时候Include一下就行。

#include
class MyTimer{private: LARGE_INTEGER _freq; LARGE_INTEGER _start; LARGE_INTEGER _stop;public: MyTimer() { QueryPerformanceFrequency(&_freq); } inline void start() { QueryPerformanceCounter(&_start); } inline void stop() { QueryPerformanceCounter(&_stop); } inline double elapse() { return 1e3*(_stop.QuadPart - _start.QuadPart) / _freq.QuadPart; } inline long long ticks() { return _stop.QuadPart - _start.QuadPart; }};

 使用方式也很简单: 三个API start, stop, elapse.

 

//Example:        MyTimer timer;        timer.start();        MatrixXd m3 = m1 * m2;        //Critical Code Here        timer.stop();        printf("Time Elapsed: %lf\n", timer.elapse());

   

主要用到的系统API有如下两个。

QueryPerformanceCounter

来自 <>

QueryPerformanceFrequency function

来自 <>

 

看一下MSDN的说明即可。

转载于:https://www.cnblogs.com/Vonng/p/4215571.html

你可能感兴趣的文章
ResultSet 可滚动性和可更新性
查看>>
VS2013 C++代码运行问题
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
LUOGU P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…
查看>>
toad for oracle中文显示乱码
查看>>
scala的REPL shell的调用
查看>>
SQL中Group By的使用
查看>>
Mybatis映射原理,动态SQL,log4j
查看>>
哪个微信编辑器比较好用?
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
gdb调试中出现No symbol table is loaded. Use the "file" command.问题
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>
图像加载
查看>>
关于zxing生成二维码,在微信长按识别不了问题
查看>>
Haskell学习-高阶函数
查看>>
手动通知扫描SD卡主动生成缩略图
查看>>