下面是一段示范代码:
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
long beginTime =clock();//获得开始时间,单位为毫秒
for(int i=0;i<10000;i++){cout<<i<<endl;}//输出10000行数字
long endTime=clock();//获得结束时间
cout<<"beginTime:"<<beginTime<<endl
<<"endTime:"<<endTime<<endl
<<"endTime-beginTime:"<<endTime-beginTime<<endl;
return 0;
}
下面的代码是使用clock计算一段程序执行时间的典型例子。
?clock_t start, finish;
?double? duration;
?start = clock();
?
?需要测量的程序段
?finish = clock();
?duration = (double)(finish - start) / CLOCKS_PER_SEC;
对于精确度要求更高的定时操作,应该使用QueryPerformanceFrequency()和 QueryPerformanceCounter()函数。这两个函数是仅供Windows 95及其后续版本使用的精确时间函数,并要求计算机从硬件上支持精确定时器。
示例:
view plaincopy to clipboardprint?
#include <iostream>
#include <windows.h>
using namespace std;
void Test()//测试程序
{
for(int i=0; i<1000; i++)
{
for(int j=0; j<100; j++)
{
printf("%d,%d/n",i,j);
}
}
}
int main(void)
{
LARGE_INTEGER BegainTime ;
LARGE_INTEGER EndTime ;
LARGE_INTEGER Frequency ;
QueryPerformanceFrequency(&Frequency);
QueryPerformanceCounter(&BegainTime) ;
//要测试的代码放在这里
Test();
QueryPerformanceCounter(&EndTime);
//输出运行时间(单位:s)
cout << "运行时间(单位:s):" <<(double)( EndTime.QuadPart - BegainTime.QuadPart )/ Frequency.QuadPart <<endl;
system("pause") ;
return 0 ;
}
单位转换关系:
1ms=1000us
1us=1000ns