[STM32C0] 大家都是怎么选择合适的编译器优化等级啊?

[复制链接]
4046|60
abotomson 发表于 2024-10-23 19:55 | 显示全部楼层
如果对代码大小有严格要求,编译器优化可以帮助减少最终代码的大小。
fengm 发表于 2024-10-23 20:59 | 显示全部楼层
较高的优化等级(如-O2或-O3)可能会对代码进行较多的优化和重排,这虽然能提高运行效率,但也可能使得调试变得更加困难。
mnynt121 发表于 2024-10-23 21:29 | 显示全部楼层
如果应用对性能有较高要求,且代码调试已经完成,可以选择较高的优化等级(如-O2或-O3)。
这将有助于提高代码的执行速度,但可能牺牲一定的调试便利性。
uptown 发表于 2024-10-23 21:55 | 显示全部楼层
等级优化可能会使得变量值和代码执行流程与源代码不一致
maqianqu 发表于 2024-10-25 09:19 | 显示全部楼层
优先优化代码大小,生成的代码较小。
chenci2013 发表于 2024-10-25 09:58 | 显示全部楼层
选择STM32的编译器优化等级是一个需要综合考虑多个因素的过程。通过了解优化等级的基本特点、根据应用场景选择优化等级、考虑编译器和工具链的兼容性以及进行实际测试和验证,可以找到最适合当前应用的优化等级。
ulystronglll 发表于 2024-10-25 10:24 | 显示全部楼层
对于代码大小不是特别敏感的应用,可以选择较低的优化等级(如-O1),以保持较好的调试体验。
vivilyly 发表于 2024-10-25 11:10 | 显示全部楼层
如果你的代码量较大,接近STM32芯片的闪存极限,可以选择较高的优化等级(如-O2或-O3),因为这些等级通常能生成更小的代码。
biechedan 发表于 2024-10-25 14:26 | 显示全部楼层
高级优化可能会使生成的汇编代码难以理解和维护。
公羊子丹 发表于 2025-1-25 08:39 | 显示全部楼层
我一般调试的时候用O0优化,保证代码逻辑清晰;发布时才会考虑用更高的优化等级,比如O2或者Os。
周半梅 发表于 2025-1-25 08:40 | 显示全部楼层
优化等级高的时候,编译器可能会重排代码,你可以加volatile关键字保护关键变量,避免出问题。
帛灿灿 发表于 2025-1-25 08:42 | 显示全部楼层
O1是个折中选项,优化不太激进,运行效率也比O0好,调试起来还能看得懂。
童雨竹 发表于 2025-1-25 08:43 | 显示全部楼层
如果是时间关键的部分,比如中断服务程序,可以用#pragma指定单独的优化等级,其他部分再用高优化。
万图 发表于 2025-1-25 08:44 | 显示全部楼层
O3优化等级确实容易“失控”,如果逻辑不对,就很可能是编译器为了优化省略了某些操作。
Wordsworth 发表于 2025-1-25 08:46 | 显示全部楼层
其实Os也挺好用的,它主要针对代码大小优化,性能和可调试性一般还能兼顾。
Bblythe 发表于 2025-1-25 08:47 | 显示全部楼层
如果高优化等级不按逻辑运行,检查一下是不是用了未初始化变量或者代码写法有歧义。
Pulitzer 发表于 2025-1-25 08:48 | 显示全部楼层
对于STM32C0这种资源有限的MCU,优化代码大小(Os)可能比优化性能更重要,节省点Flash和RAM嘛。
Uriah 发表于 2025-1-25 08:49 | 显示全部楼层
如果实在担心高优化等级影响逻辑,可以多用单元测试,确保代码在各种优化下都跑得对。
Clyde011 发表于 2025-1-25 08:50 | 显示全部楼层
最好结合实际需求选择,开发调试用O0或者O1,最终固件可以试试Os或者O2平衡性能和大小。
PreWorld 发表于 2025-1-26 23:57 | 显示全部楼层
较低的优化级别(例如-o1)通常会提供更好的调试体验,因为它们生成的代码与源代码更加一致。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部