本帖最后由 Eric2013 于 2019-3-30 14:44 编辑
MDK AC5(ARM Compiler5)编译STM32H7的HAL库带Browse Info时速度巨卡,电脑性能稍差点,编译个大点的工程能编译出几十分钟。
测试条件:
1、IAR8.30开最高等级的最小代码优化
2、MDK5.27正式版使用AC5开最高等级优化3
3、MDK5.27正式版使用AC6开最小代码优化
4、Embedded Studio4.15 beta版使用GCC开最高等级代码大小优化
5、Embedded Studio4.15 beta版使用CLANG开最高等级代码大小优化
6、全部开启多核并行编译
7、电脑配置是i3-3220,机械硬盘
8、暂未测试芯片实际执行性能。
注意,现在MDK的AC6和IAR打开后都会主动创建Browse Info,在窗口的最下方正中间有个提示。
MDK标识,要等待标识消失才可以使用go to def
QQ截图20190330144146.jpg (34.43 KB, 下载次数: 0)
下载附件
2019-3-30 14:43 上传
总结,MDK的AC6生成的代码最小。
现在MDK5的AC6也是用的CLANG,总的来说,无论是编译速度还是生成代码大小,CLANG都表现出巨大优势。
当前HAL库使用AC6编译的警告有点多,可以选择使用AC5的警告临时屏蔽,提供的测试例子是采用的这种方式。
另外使用中文也会有很多警告,所以干脆使用UTF-8编码,就没有警告了,不过程序中的打印有中文的话,串口助手要使用支持UTF-8的,比如SecureCRT即可。
我当然知道arm compiler 6是基于llvm的。但arm compiler 6的很多优化是要经过一段时间验证才会上传到社区的,是不是会被社区接受加入主干是另说了。真是的例子就是,一年前很多arm compiler 6的优化就被提交到开源社区了,结果到了LLVM8/9,还是没能体现出来。
最后就是稳定性,实测还是可以的,后面开几个板子,长期测试一段时间看看。
最高的速度优化是-Omax,不是-Ofast。
感谢告知,我说怎么只提高了一丢丢,稳定性还是可以的
-Omax 会默认打开 LTO。 记得在 MDK里勾选Link-Time-Optimisation。否则linker会报告错误。
-Omax无法通过下拉列表获得,只能通过在 Misc Control的文本框里添加。在这里添加的选项会覆盖其它通过GUI配置的选项(因为在命令行中更靠后)。
另外MDK也是原生态就支持GCC的。
一周热门 更多>