
本帖最后由 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的例程供大家测评: ![]() ![]() ![]() 先测试编译时间: 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即可。 |
性能越来越强劲的Embedded Studio与MDK和IAR性能PK与模板制作方法
https://www.stmcu.org.cn/module/ ... &fromuid=330695
(出处: 论坛-意法半导体STM32/STM8技术社区)
新增两个测试
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