打印
[STM32H7]

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

[复制链接]
1807|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
鉴于MDK AC5(ARM Compiler5)编译STM32H7的HAL库带Browser 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打开后都会主动创建Browser Info,在窗口的最下方正中间有个提示。
MDK标识,要等待标识消失才可以使用go to def

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


提供一个STM32H7的例程供大家测评:
MDKIARES-USART.rar (3.47 MB)



先测试编译时间:
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)

IAR:
20 290 bytes of readonly  code memory
    142 bytes of readonly  data memory
6 677 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即可。

使用特权

评论回复
沙发
零三翟邢止胃| | 2019-3-29 08:32 | 只看该作者
真是个好帖子!我要顶住啊!

使用特权

评论回复
板凳
Eric2013|  楼主 | 2019-3-30 01:31 | 只看该作者
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


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:RTX->μCOS-II->FreeRTOS->embOS->μCOS-III μCGUI->emWin->FatFs->DSP 淘宝:armfly.taobao.com

115

主题

639

帖子

34

粉丝