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

比较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来玩玩
橡皮筋儿 回答时间:2019-3-29 09:46:02
提示: 作者被禁止或删除 内容自动屏蔽
七哥 回答时间: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技术社区)
长春的风 回答时间:2019-3-29 12:27:24
支持一下!安富莱威武!
STMWoodData 回答时间:2019-3-29 14:36:46
提示: 作者被禁止或删除 内容自动屏蔽
jyl_518 回答时间: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



edmundlee 回答时间:2019-3-30 01:47:39
最近转用了VisualGDB, 感觉速度很快, 应该跟Embedded Studio4是一个等级的吧, 当然这是我凭感觉猜的
watershade 回答时间:2019-3-30 22:12:13
好东西,实践出真知
橡皮筋儿 回答时间:2019-4-1 10:04:07
提示: 作者被禁止或删除 内容自动屏蔽
289466080 回答时间:2020-3-12 14:57:56
谢谢分享

所属标签

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