转载http://blog.csdn.net/wly_2014/article/details/48475751
http://blog.csdn.net/u012286517/article/details/50331865
一、c++的头文件ctime/time.h中的库函数clock()提供了测试函数运行时间的方法:
1、clock()返回类型为clock_t类型
2、clock_t实际为long 类型, typedef long clock_t
3、clock() 函数,返回从 开启这个程序进程 到 程序中调用clock()函数 时之间的CPU时钟计时单元(clock tick)数(挂钟时间),返回单位是毫秒
4、可以用常量CLOCKS_PER_SEC, 这个常量表示每一秒(per second)有多少个时钟计时单元
实例代码如下:
#include <iostream>
#include <ctime>
using namespace std;
int main(){
clock_t start, end;
start = clock();
//如果函数执行时间少的话,可能最后测出的结果为0,因为现在机子的运行速度很快
for(int j = 0; j < 1000; j++)
for(int i = 0; i < 1000000; i++){
}
end = clock();
cout << (double)(end - start) / CLOCKS_PER_SEC << endl;
return 0;
}
运行结果:2.562
二、高精度时控函数QueryPerformanceFrequency(),QueryPerformanceCounter()
原理:
QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位计时.但是QueryPerformanceCounter()确切的精确计时的最小单位是与系统有关的,所以,必须要查询系统以得到QueryPerformanceCounter()返回的嘀哒声的频率.
QueryPerformanceFrequency()提供了这个频率值,返回每秒嘀哒声的个数.
计算确切的时间是从第一次调用QueryPerformanceCounter()开始的
假设得到的LARGE_INTEGER为nStartCounter,过一段时间后再次调用该函数结束的,
设得到nStopCounter.
两者之差除以QueryPerformanceFrequency()的频率就是开始到结束之间的秒数.由于计时函数本身要耗费很少的时间,要减去一个很少的时间开销.但一般都把这个开销忽略。
使用方法: