
使用clock函数获得程序开始和结束的时间,相减就能得到程序运行的时间。clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:clock_t clock(void) ;简单而言,就是该程序从启动到函数调用占用CPU的
clock()函数,计算代码消耗的cpu时间,一般用处不大
time()函数,获取系统时间,许多依赖于time()计算超时的程序,在修改系统时间后一般都不能正常运行。
因此本人推荐:
windows下:计算绝对时间QueryPerformanceCount/QueryPerformanceFrequency
cpu脉冲计数/ cpu频率,获得开机以来的秒数。
当然,这两个函数获得时间精度是很高的(us级别),只是我们一般用不到这么精确。
linux下:
#include <sys/sysinfoh>
调用sysinfo()获得系统启动以来经历的秒数时间。这个不属于高精度计时。
如果要进行高精度计时,高精度时间,C运行库的gettimeofday()(当然据我估计也是受到系统更改时间的影响)。
用绝对时间判断系统时间有没有被更改,用高精度时间精确计时,二者结合才是王道。
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;
//输出代码段运行的时钟周期数
//以频率11Gcpu为例,如果换计算机把其中的26改乘其它即可,因为相信大家的cpu都应该在1G以上 ^_^
cout<< (double) (timer /26/1000000000) << endl;
return 0;
#include<stdioh>
#include<stdlibh>
#include<timeh>
void main()
{
clock_t start, finish;
double duration=0;
start = clock();
/
添加代码
/
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
}
把你需要计算时间的代码添加进去就可以结算出时间了。有不明白的可以继续问我。
#include "stdioh"
#include "stdlibh"
#include "timeh"
int main( void )
{
clock_t start = clock();
//此处写你的代码
clock_t finish = clock();
double duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );//这里就是时间了
return 0;
}
还有问题欢迎继续hi我
这个需要分情况来看。
1C语言源程序通过预处理然后编译,产生汇编代码,不同的汇编代码和指令有不同的执行时间。
2一个指令的执行时间,用其所需要的指令周期(执行一条指令所需要的时间)来衡量。对于单字节指令,就是一个读取-执行周期(fetch-execute cycle),对于多字节指令,还需要更多的指令周期。
3一个指令周期,一般是由若干个机器周期(完成一次基本 *** 作需要的时间,比如获取变量在RAM当中的地址)组成。
4再一个,时钟周期,这个可以形象一点地和通常所说的主频联系起来,比如CPU核心的主频是25GHz,则时钟周期为04ns,这个是计算机当中最小的时间计量单位。一个机器周期由若干个时钟周期组成。
以上就是关于如何计算C++中精确的代码运行时间全部的内容,包括:如何计算C++中精确的代码运行时间、求C语言程序:如何获得一个程序运行的时间 最好带一段简单的代码 新人学不懂 呵呵 谢谢大家啦、C语言运行一条语句所用时间如何计算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)