比较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条回答
清新怡人
1楼-- · 2020-01-08 21:08
很喜欢这种测试风格,不过我关心的是代码效率,跑benchmark才能见真功夫。IAR在效率方面绝对是顶尖的,特别适合强迫症患者。当然AC6也很牛了,错误提示比AC5友善很多,编译速度也很快,缺点是调试不友善。
Eric2013
2楼-- · 2020-01-09 03:02
清新怡人 发表于 2019-4-2 18:03
很喜欢这种测试风格,不过我关心的是代码效率,跑benchmark才能见真功夫。IAR在效率方面绝对是顶尖的,特别 ...

IAR的确比较溜,所以我们现在一直保持制作IAR版本的例子。

等后面制作二代DSP教程的时候会再次制作一期,分享下。

AC6的调试挺好用的,最近刚发现AC6使用中文路径问题稍多,所以不可使用中文
qwert1213131
3楼-- · 2020-01-09 04:44
对比做的很不错,非常清晰
Eric2013
4楼-- · 2020-01-09 09:51
大傻师 发表于 2019-3-30 14:47
2018-q4是gcc8.2,用2018-q2的gcc7.3是可以开LTO的
https://developer.arm.com/tools-and-software/open- ...

Embedded Studio刚发布的4.16正式版修正了GCC做Link-Time优化,可以正常使用了,GCC貌似还是之前的版本

QQ截图20190406014402.jpg (246.11 KB, 下载次数: 0)

下载附件

2019-4-6 01:44 上传

advarx21ic
5楼-- · 2020-01-09 12:22
 精彩回答 2  元偷偷看……
Eric2013
6楼-- · 2020-01-09 12:38
advarx21ic 发表于 2019-4-7 22:41
Eric2013大神,我在您的博客http://blog.sina.com.cn/s/blog_98ee3a930102w4gf.html上看到"SEGGER发布的可以 ...

他们网站没有改版前是可以下载的,升级后不行了。

之前申请没有回复我,帮你刚刚又申请了一次,如果回复了,我回复你

111.jpg (63.84 KB, 下载次数: 0)

下载附件

2019-4-8 01:10 上传





一周热门 更多>