C语言运行一条语句所用时间如何计算?
4个回答
展开全部
unsigned long HighStart,LowStart,HighEnd,LowEnd;
__int64 start =0;
__int64 end = 0;
__int64 timer =0;
//获取代码运行开始时cpu内部计数器的值
__asm
{
RDTSC
mov HighStart, edx
mov LowStart, eax
}
for(int i= 0; i<100000; i++ )
{
for(int i= 0; i<100000; i++ )
{
}
}
//获取代码结束时cpu内部计数器的值,并减去初值
__asm
{
RDTSC
mov HighEnd, edx
mov LowEnd, eax
}
start = (__int64) HighStart<<32;
start |= (__int64) LowStart;
end = (__int64) HighEnd<<32;
end |= (__int64) LowEnd;
timer = end - start;
//输出代码段运行的时钟周期数
//以频率1.1Gcpu为例,如果换计算机把其中的2.6改乘其它即可,因为相信大家的cpu都应该在1G以上 ^_^
cout<< (double) (timer /2.6/1000000000) << endl;
return 0;
__int64 start =0;
__int64 end = 0;
__int64 timer =0;
//获取代码运行开始时cpu内部计数器的值
__asm
{
RDTSC
mov HighStart, edx
mov LowStart, eax
}
for(int i= 0; i<100000; i++ )
{
for(int i= 0; i<100000; i++ )
{
}
}
//获取代码结束时cpu内部计数器的值,并减去初值
__asm
{
RDTSC
mov HighEnd, edx
mov LowEnd, eax
}
start = (__int64) HighStart<<32;
start |= (__int64) LowStart;
end = (__int64) HighEnd<<32;
end |= (__int64) LowEnd;
timer = end - start;
//输出代码段运行的时钟周期数
//以频率1.1Gcpu为例,如果换计算机把其中的2.6改乘其它即可,因为相信大家的cpu都应该在1G以上 ^_^
cout<< (double) (timer /2.6/1000000000) << endl;
return 0;
展开全部
把time.h include进来
然后在代码的前面和后面都加一条代码,获得时间 long start=clock();
long end=clock();
两个减一下就是秒数
然后在代码的前面和后面都加一条代码,获得时间 long start=clock();
long end=clock();
两个减一下就是秒数
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把time.h include进来
然后在代码的前面和后面都加一条代码,获得时间 long start=clock();
long end=clock();
两个减一下就是秒数
然后在代码的前面和后面都加一条代码,获得时间 long start=clock();
long end=clock();
两个减一下就是秒数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用time函数:
time函数举例
int main()
{
time_t t1,t2;
int i;
t1 = time(NULL);
for(i = 0;i<10000;i++)
;
t2 = time(NULL);
cout<<t2-t1<<endl;
return 0;
}
time函数举例
int main()
{
time_t t1,t2;
int i;
t1 = time(NULL);
for(i = 0;i<10000;i++)
;
t2 = time(NULL);
cout<<t2-t1<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询