鉴于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即可。
|