你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
baiyongbin2009 发布时间:2019-3-29 00:25
本帖最后由 baiyongbin2009 于 2019-3-30 01:29 编辑

鉴于MDK AC5(ARM Compiler5)编译STM32H7的HAL库带Browser Info时速度巨卡,电脑性能稍差点,编译个大点的工程能编译出几十分钟。特此做一个完整的测试
测试条件:
1、IAR8.30开最高等级的最小代码优化,Printf选择small和full均做测试。
2、MDK5.27正式版使用AC5开最高等级优化3,使用的MicroLib。
3、MDK5.27正式版使用AC6开最小代码优化,使用的MicroLib。
4、Embedded Studio4.15 beta版使用GCC开最高等级代码大小优化
5、Embedded Studio4.15 beta版使用CLANG开最高等级代码大小优化
6、全部开启多核并行编译
7、电脑配置是i3-3220,机械硬盘
8、暂未测试芯片实际执行性能。

注意,现在MDK的AC6和IAR打开后都会主动创建Browser Info,在窗口的最下方正中间有个提示。
MDK标识,要等待标识消失才可以使用go to def

IAR标识,要等到进度条到头才可以使用go to def


提供一个STM32H7的例程供大家测评:
MDKIARES-USART.rar (3.47 MB, 下载次数: 188)



先测试编译时间:
MDK5使用AC5带Browser Info
耗时8分51秒

MDK5使用AC6带Browser Info
耗时1分07秒

IAR带Browser Info(IAR的编译速度很快,等Browser Info时间较长)
耗时2分03秒

Embedded Studio4.15使用GCC带Browser Info
耗时38秒

Embedded Studio4.15使用CLANG带Browser Info
耗时21秒

总结,Embedded Studio使用CLANG完胜其它方式。

生成代码大小
MDK5使用AC5:
Total RO  Size (Code + RO Data)                    17060 (16.66kB)
Total RW  Size (RW Data + ZI Data)                 6536 (  6.38kB)
Total ROM Size (Code + RO Data + RW Data)  17120 (16.72kB)

MDK5使用AC6:
Total RO  Size (Code + RO Data)                    15960 (15.59kB)
Total RW  Size (RW Data + ZI Data)                 6544 (  6.39kB)
Total ROM Size (Code + RO Data + RW Data)  15980 (15.61kB)

MDK5使用AC6,开启Link-Time优化(2019-03-29,晚11点)
Total RO  Size (Code + RO Data)                    11476 (  11.21kB)
Total RW  Size (RW Data + ZI Data)                 6512 (   6.36kB)
Total ROM Size (Code + RO Data + RW Data)  11484 (  11.21kB)

IAR(printf选择full):
20 290 bytes of readonly  code memory
    142 bytes of readonly  data memory
6 677 bytes of readwrite data memory

IAR(printf选择small,新增small测试,2019-03-29,晚10点):
16 734 bytes of readonly  code memory
      90 bytes of readonly  data memory
  6 621 bytes of readwrite data memory

Embedded Studio4.15使用GCC


Embedded Studio4.15使用CLANG


总结,MDK的AC6生成的代码最小。

现在MDK5的AC6也是用的CLANG,总的来说,无论是编译速度还是生成代码大小,CLANG都表现出巨大优势。

当前HAL库使用AC6编译的警告有点多,可以选择使用AC5的警告临时屏蔽,提供的测试例子是采用的这种方式。

另外使用中文也会有很多警告,所以干脆使用UTF-8编码,就没有警告了,不过程序中的打印有中文的话,串口助手要使用支持UTF-8的,比如SecureCRT即可。
收藏 评论13 发布时间:2019-3-29 00:25

举报

13个回答
Dylan疾风闪电 回答时间:2019-3-29 07:58:35
支持一下。
一代睡神的崛起 回答时间:2019-3-29 09:17:49
谢谢分享,等会儿就去下一个KEIL5.27来玩玩
932837498@qq.co 回答时间:2019-3-29 09:46:02
大佬,请问下Embedded Studio用起来怎样?毕竟MDK的注册机明年就到期了
toofree 回答时间:2019-3-29 09:55:19
小马过河,得实地体验一下,适合自己的才是最好的。
baiyongbin2009 回答时间:2019-3-29 11:51:25
932837498@qq.co 发表于 2019-3-29 09:46
大佬,请问下Embedded Studio用起来怎样?毕竟MDK的注册机明年就到期了

性能越来越强劲的Embedded Studio与MDK和IAR性能PK与模板制作方法
https://www.stmcu.org.cn/module/ ... &fromuid=330695
(出处: 论坛-意法半导体STM32/STM8技术社区)
ccfengfw 回答时间:2019-3-29 12:27:24
支持一下!安富莱威武!
流水源 回答时间:2019-3-29 14:36:46
谢谢分享
jyl518-283289 回答时间:2019-3-29 15:48:27
很好的测试,
baiyongbin2009 回答时间:2019-3-30 01:30:30
本帖最后由 baiyongbin2009 于 2019-3-30 02:21 编辑

新增两个测试

MDK5使用AC6:
Total RO  Size (Code + RO Data)                    15960 (15.59kB)
Total RW  Size (RW Data + ZI Data)                 6544 (  6.39kB)
Total ROM Size (Code + RO Data + RW Data)  15980 (15.61kB)

MDK5使用AC6,开启Link-Time优化

Total RO  Size (Code + RO Data)                    11476 (  11.21kB)
Total RW  Size (RW Data + ZI Data)                 6512 (   6.36kB)
Total ROM Size (Code + RO Data + RW Data)  11484 (  11.21kB)


同时将IAR也是开启Link优化和其它能优化的地方(printf选择small lib)
16 734 bytes of readonly  code memory
      90 bytes of readonly  data memory
  6 621 bytes of readwrite data memory



12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版