比较IAR,MDK的AC5和AC6以及Embedded Studio的CLANG和GCC编译HAL库性能

2020-01-04 19:02发布

本帖最后由 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即可。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
81条回答
xu84404351
1楼-- · 2020-01-12 13:44
MDK5.27正式版使用AC6编译HAL库那些警告处理起来还是很麻烦,等等hal库适配ac6再试试
Gorgon_Meducer
2楼-- · 2020-01-12 16:21
本帖最后由 Gorgon_Meducer 于 2019-5-14 21:45 编辑
Eric2013 发表于 2019-5-14 18:26
今天实际测试-Omax和-Ofast,带RTOS和各种中间件的,测试性能基本没区别。

反倒代码大了一些。后再做个 ...


DSP最好用 CMSIS-DSP,依靠编译器是不靠谱的。j
想要性能,就要用IAR,开最高speed优化,开multiple-file-compilation。依靠armclang是不靠谱的。另外尺寸问题上,我觉得你没用好IAR,IAR开multiple-file-compilation,并且打开discard-unused-publics,结果绝对不会让你失望。
在linker里,Optimisation要打开 Merge Dulicated sections.
Eric2013
3楼-- · 2020-01-12 21:26
Gorgon_Meducer 发表于 2019-5-14 21:42
DSP最好用 CMSIS-DSP,依靠编译器是不靠谱的。
想要性能,就要用IAR,开最高speed优化,开multiple-file- ...

编译器还可以,之前用AC5开时间优化做JPEG软解,性能提升不少,还是比较给力的。
Eric2013
4楼-- · 2020-01-12 21:46
xu84404351 发表于 2019-5-14 18:56
MDK5.27正式版使用AC6编译HAL库那些警告处理起来还是很麻烦,等等hal库适配ac6再试试 ...

AC6编译HAL可以的,当前测试了F4和H7的,都没问题,其它的系列还没有测试过。
Gorgon_Meducer
5楼-- · 2020-01-13 03:15
 精彩回答 2  元偷偷看……
Eric2013
6楼-- · 2020-01-13 08:18
Gorgon_Meducer 发表于 2019-5-14 21:46
我只能说你还没有发挥最大性能。

编译器能开的全开了,而需要手动开的,没整。

大部分应用场合,编译器还是非常给力的,而有些应用场景就不那么给力了,就像前面那个-Ofast和-Omax的测试。

一周热门 更多>