在标准的C/C++中最小的时间单位是毫秒ms,下面代码中clock_t是long; 每经过1ms clock()的值就增加1;常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元
1 #include<iostream> 2 #include<ctime> 3 using namespace std; 4 5 int main() 6 { 7 clock_t start,finish; 8 start=clock(); 9 double result; 10 11 //测试数据, 12 long long sum; 13 for(int i=0;i<100000000;i++){ 14 sum+=i; 15 } 16 17 18 finish=clock(); 19 result=(double) (finish-start)/CLOCKS_PER_SEC; 20 cout<<result; //输出单位是s 21 return 0; 22 }
上面那一种的方法虽然能够计时,但是精度往往达不到我们的要求,这里再介绍一种精度到微秒级别的计时方法,代码如下:
1 //Windows系统下time(),clock(),timeGetTime(),GetTickCount(),QueryPerformanceCounter()来计时 by MoreWindows 2 #include <stdio.h> 3 #include <windows.h> 4 5 int main() 6 { 7 //用QueryPerformanceCounter()来计时 微秒 8 LARGE_INTEGER large_interger; 9 double dff; 10 __int64 c1, c2; 11 QueryPerformanceFrequency(&large_interger); 12 dff = large_interger.QuadPart; 13 QueryPerformanceCounter(&large_interger); 14 c1 = large_interger.QuadPart; 15 Sleep(800); //在这里加入测试语句 16 QueryPerformanceCounter(&large_interger); 17 c2 = large_interger.QuadPart; 18 printf("本机高精度计时器频率%lf ", dff); 19 printf("第一次计时器值%I64d 第二次计时器值%I64d 计时器差%I64d ", c1, c2, c2 - c1); 20 printf("计时%lf毫秒 ", (c2 - c1) * 1000 / dff); 21 22 return 0; 23 }
http://www.cnblogs.com/dwdxdy/p/3214905.html