C++中的执行时间测量
2016-07-04 00:00
169 查看
【程序语言】C++中的执行时间测量 - 精灵的博客 - 博客频道 - CSDN.NET
http://blog.csdn.net/theprinceofelf/article/details/6636041
测试一段代码,或者一个函数是写完代码后经常要做的事。
我习惯的写东西的顺序是:
测试代码 --> 伪代码 --> 实际代码 --> 更加高效的版本 --> 带输入输出控制检测,出错验证的代码 -->更加灵活的版本
下面列举下常用的时间测试方法:
1. <time.h>版本
clock_t start = clock();
/*code to be tested*/
clock_t end = clock();
cout<<end - start<<endl;
大家多这个版本多半不会陌生,这应该是最常用的执行时间测试方法了,能精确到ms级。
2.<Windows.h>版本
LARGE_INTEGER frec;
LARGE_INTEGER strt;
LARGE_INTEGER ed;
QueryPerformanceFrequency(&frec);
QueryPerformanceCounter(&strt);
/*code to be tested*/
QueryPerformanceCounter(&ed);
cout<<(ed.QuadPart-strt.QuadPart)*1000/frec.QuadPart<<endl;
这个是针对于特定的平台的测试,有时候我们需更高的精度测试时,往往需要用到这个测试,其中frec记录的是CPU每秒的频率,使用QueryPerformanceFrequency()查询。然后分别测试代码开始处的时钟数和结束处得时钟数。最后,相减除以每秒的频率就得到执行时间。*1是秒数,*1000是毫秒数,*1000 000 是微秒数,*1000 000 000是ns数。
http://blog.csdn.net/theprinceofelf/article/details/6636041
测试一段代码,或者一个函数是写完代码后经常要做的事。
我习惯的写东西的顺序是:
测试代码 --> 伪代码 --> 实际代码 --> 更加高效的版本 --> 带输入输出控制检测,出错验证的代码 -->更加灵活的版本
下面列举下常用的时间测试方法:
1. <time.h>版本
clock_t start = clock();
/*code to be tested*/
clock_t end = clock();
cout<<end - start<<endl;
大家多这个版本多半不会陌生,这应该是最常用的执行时间测试方法了,能精确到ms级。
2.<Windows.h>版本
LARGE_INTEGER frec;
LARGE_INTEGER strt;
LARGE_INTEGER ed;
QueryPerformanceFrequency(&frec);
QueryPerformanceCounter(&strt);
/*code to be tested*/
QueryPerformanceCounter(&ed);
cout<<(ed.QuadPart-strt.QuadPart)*1000/frec.QuadPart<<endl;
这个是针对于特定的平台的测试,有时候我们需更高的精度测试时,往往需要用到这个测试,其中frec记录的是CPU每秒的频率,使用QueryPerformanceFrequency()查询。然后分别测试代码开始处的时钟数和结束处得时钟数。最后,相减除以每秒的频率就得到执行时间。*1是秒数,*1000是毫秒数,*1000 000 是微秒数,*1000 000 000是ns数。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析
- C与C++之间相互调用实例方法讲解