关于 while(1)和for(;;)效率问题的一点想法

嵌入式系统 时间:2016-11-29来源:网络
这几天看到好友的文章关于while(1)和for(;;)效率的讨论,手痒说了两句。回头一寻思,自己也只是推断。没有做任何实验,我们就看看这两种写法到底有什么区别:


实验环境:IAR EWARM 5.2

我就随便在一个嵌入式项目上做文章了,首先工程C语言编译优化选择了None, 输出选择带汇编输出,输出的汇编文件和C语言对应上。




我在main函数里先用for(;;)写了个死循环,我们看看编译结果:

注意main.c生成了一个对应的main.s




可以看到,是用一条跳转指令直接替代的for (;;)。


再更改一下代码:



编译一下看结果:


while(1)的循环也是一句跳转指令所替代。


IAR EWARM 5.2下,可见 for(;;)和while(1)在未开优化代码级别下,完全一样。无任何区别。


我们再来看看 linux 下的arm-rtems4.9-gcc的结果:



1 2

关键词: whilefor效率问

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版