总结下c++中统计程序运行时间的方法。
1:
void main()
{
time_t t1;
time(&t1);
for(int i=0;i<1000000000;i++)
{
int a=i;
}
time_t t2;
time(&t2);
printf("已运行%d秒\n",t2-t1);
2:VC的话有profile,在链接属性页勾选profile项,然后profile(在编译菜单下),各个函数时间都出来了
3:
int main()
{
const double begin=(double)clock()/CLK_TCK;
for(int i=10000;i>0;i--)
for(int j=10000;j>0;j--)
max(i,j);
const double end=(double)clock()/CLK_TCK;
cout <
4:
void main()
{
clock_t start,finish; //typedef long clock_t;
double totaltime;
start=clock(); //clock():确定处理器当前时间
…… //把你的程序代码插入到这里面
finish=clock();
totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
cout<<"\n此程序的运行时间为"<
来自百度百科:
clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: #ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量
CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
void elapsed_time()
{
printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);
}
当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间
#include
#include
#include
int main(void)
{
long i = 10000000L;
clock_t start, finish;
double duration;
/* 测量一个事件持续的时间*/
printf( "Time to do %ld empty loops is ", i) ;
start = clock();
while( i-- );
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
system("pause");
}
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。