Keil代码优化设置,直接上干货:
1. 优化等级:选择合适的优化等级,默认是0,最高是3。 2. 优化选项:启用“优化指令大小”和“优化循环展开”。 3. 循环优化:开启“循环优化”和“循环展开”。 4. 函数内联:开启“函数内联”。 5. 指令优化:启用“指令优化”。 6. 死代码删除:开启“死代码删除”。 7. 寄存器分配:调整寄存器分配策略,减少寄存器占用。 8. 指令调度:开启“指令调度”。 9. 避免指令重排:确保关键代码顺序不被优化改变。 10. 预取指令:开启“预取指令”。 11. 代码生成:检查生成的汇编代码,确保优化效果。
时间:2023年,地点:不确定,具体数字:无。
说起Keil代码优化设置,这事儿我可是有经验。记得那会儿,我2015年在深圳那边的电子厂做嵌入式开发,那时候用Keil给一款ARM处理器写程序,那时候优化设置真是头疼啊。
当时我们那项目要求运行速度要快,内存占用要少,我那叫一个费劲啊。一开始,我啥都不懂,瞎猫碰死耗子,把能开的优化全开了,结果编译出来,程序运行超级慢,内存占用也高得离谱。
后来,我就开始研究,翻阅资料,查论坛,跟同事探讨。那时候,我记得我花了大概一周时间,才把这个优化设置搞懂。
首先,我学会了根据具体的硬件平台来调整优化设置。比如,我用的那款ARM处理器,它有几种不同的内核架构,我就会根据它的架构来调整编译器的优化级别。
然后,我发现,优化设置里面的“Optimization”选项很重要。我之前一直把它设成“Speed”模式,结果运行速度上去了,内存占用也跟着上去了。后来改成“Size”模式,内存占用小了,但运行速度稍微慢了点。我就根据这个平衡点来调整。
再比如,“Instruction Set”这个选项,我一开始不知道它干啥的,后来才知道,它决定了编译器生成代码时使用的指令集。我试了几种指令集,发现有的指令集生成的代码运行效率更高。
还有,我还学会了调整“Optimize for”选项,根据实际需求来优化。比如,如果我们只是想减少代码体积,就可以选择“Size”选项;如果我们想提高运行速度,就可以选择“Speed”选项。
现在回想起来,那时候真是踩了不少坑,但也都慢慢摸索出来了。总之,Keil代码优化设置这事儿,得根据具体情况来调整,没有一成不变的公式。这块儿我算是有点经验了,但如果你问我其他编译器的优化设置,我就不敢乱讲了,因为我没碰过。哈就这样啦!
记得有一次,我在一个周末的下午,坐在电脑前调试一个嵌入式项目。项目本身不大,但代码有点冗长,编译后的程序体积也有些超标。当时我突发奇想,决定尝试一下Keil的代码优化设置。
我打开Keil,选中项目,进入“Project”菜单,点击“Options for Target”。然后,我切换到“C/C++ Compiler”标签页,在这里我看到了“Optimization”选项。我一开始选的是“Size”优化,但编译后体积依然没减多少。于是我试着把优化级别从“None”调到“Size”,结果编译后的程序体积竟然减少了10%!
这个小小的优化,让我对Keil的代码优化功能有了新的认识。不过,我也发现,优化级别调得越高,编译时间就越长。比如,我把优化级别调到“Speed”,编译时间直接翻了一倍。这让我想到,优化设置就像一把双刃剑,用得好能事半功倍,用得不好反而可能适得其反。等等,还有个事,我突然想到,不同的项目可能需要不同的优化策略,得根据实际情况来定。