如何计算C++中精确的代码运行时间

如何计算C++中精确的代码运行时间,第1张

使用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语言运行一条语句所用时间如何计算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9389345.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存