如何在c++中查一个语句的指令时间

在c++中我想知道一个语句的执行时间;比如intdelay=200;for(;delay>0;delay--);那么for语句循环下来是多长时间呢?我想可能有一个变化可以... 在c++中我想知道一个语句的执行时间;
比如
int delay=200;
for(;delay>0;delay--);
那么for语句循环下来是多长时间呢?我想可能有一个变化可以就是把程序编译成功后反汇编,但是我在编程的时候就要知道,整个程序还没编完,有没有直接只选择该语句,可以查找到该语句的执行时间的,而且这个语句的执行时间是一定的还是与代码的一些运行具体的条件和环境有关的?
iamxujian大哥讲得很精确,不过我还想问下,这个如果通过频率和指令周期计算,
现在的程序是在pc机上编写的,不过最后会下载到arm中去执行,arm中的是外部12M晶振起振,arm的主频最高可达202M,但是在不同的时候可能会将主频设置的不一样。那我计算的时候是根据pc的主频算还是arm的主频算,指令周期是不是要把它变成汇编语句之后计算啊?而且这个变成汇编语句的过程,我觉得他应该不是固定的吧,不是还有什么优化过程吗?这条语句是不是在不同的前后代码背景中被汇编成的语句有所差异,这样说来,就应该看arm的汇编语句,这这些汇编语句的指令周期,以及arm当前工作的频率来计算了,应该是根据12M的外部起振频率算吗?像单片机一样,还是根据arm的主频,那么不同的主频下还会延时时间不同?貌似我的推测矛盾了。
那么是按12外部起振频率算,根据变成的汇编语句算,这个汇编语句是不是只要在同arm中都是固定的?
展开
 我来答
栩箭
2010-05-19 · TA获得超过5310个赞
知道大有可为答主
回答量:3036
采纳率:0%
帮助的人:1652万
展开全部
对于裸机, 执行时间可以通过频率跟指令周期来计算. 也可以在需要测量的语句前后假如辅助测量的代码去读取硬件计时器上的时间.

但是目前PC上一般都有分时操作系统, 这种情况下语句的执行时间就只能通过频率跟指令周期来计算了.

1, 你需要什么版本的程序就根据什么的算. 如果是需要知道PC上运行的时间, 就根据PC的算, 需要ARM上运行的时间, 就根据ARM的算. 指令周期, 当然就是指令的周期, 汇编下才能直观地看到指令.
2, 对于编译器的优化, 这个还是跟之前一样, 你需要哪个优化等级的, 就按照那个等级优化好了再算.
3, 我对ARM不熟悉, 我用DSP比较多. 印象中ARM应该一个时钟周期的一个流水级别只能运行一条指令, 那你查查ARM的MIPS, MCPS之类的, 用这个当作频率.
4, 对于DSP, 循环跳转等等指令由于有一些特殊的模块, 比如零消耗循环, 延迟槽等等的存在, 计算指令时间还需要具体分析. 至于ARM有没有这些东西, 我就不清楚了.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式