|
本帖最后由 baiyongbin2009 于 2019-3-30 01:29 编辑 & v3 n4 X3 p- @6 b1 C+ N 鉴于MDK AC5(ARM Compiler5)编译STM32H7的HAL库带Browser Info时速度巨卡,电脑性能稍差点,编译个大点的工程能编译出几十分钟。特此做一个完整的测试 测试条件: 1、IAR8.30开最高等级的最小代码优化,Printf选择small和full均做测试。 2、MDK5.27正式版使用AC5开最高等级优化3,使用的MicroLib。6 } w, D) v- b$ n# b. @ 3、MDK5.27正式版使用AC6开最小代码优化,使用的MicroLib。 4、Embedded Studio4.15 beta版使用GCC开最高等级代码大小优化1 U i1 d, Y! j6 a$ ^ 5、Embedded Studio4.15 beta版使用CLANG开最高等级代码大小优化 6、全部开启多核并行编译 7、电脑配置是i3-3220,机械硬盘" c/ s8 a3 J. |- q 8、暂未测试芯片实际执行性能。 " ^1 f/ J/ k! C- T2 @ 注意,现在MDK的AC6和IAR打开后都会主动创建Browser Info,在窗口的最下方正中间有个提示。 MDK标识,要等待标识消失才可以使用go to def IAR标识,要等到进度条到头才可以使用go to def ; {3 O- C& ^2 Q0 B- m3 o提供一个STM32H7的例程供大家测评: MDKIARES-USART.rar (3.47 MB, 下载次数: 188) ) T! `) f# G3 b" q- k8 x; S9 ] 先测试编译时间:# U) e1 C8 a/ L1 C# R) i MDK5使用AC5带Browser Info 耗时8分51秒. G/ q Y8 x2 `8 l& |! x 3 m- N+ f4 d1 |- U MDK5使用AC6带Browser Info* ]* G3 U9 t) x7 {' l0 z" p! ~ 耗时1分07秒 % A8 ]' }9 y$ l IAR带Browser Info(IAR的编译速度很快,等Browser Info时间较长) 耗时2分03秒5 }. j4 O8 s3 e9 W$ v3 I. s% n. L* Y ' H0 z3 y$ q) K {* K- ~ Embedded Studio4.15使用GCC带Browser Info 耗时38秒. A& L: E! U: V7 U2 T: W Embedded Studio4.15使用CLANG带Browser Info 耗时21秒 总结,Embedded Studio使用CLANG完胜其它方式。 生成代码大小 MDK5使用AC5:+ C3 ~ z; r+ B4 j" V Total RO Size (Code + RO Data) 17060 (16.66kB)0 _2 n, n% v z/ r" i Total RW Size (RW Data + ZI Data) 6536 ( 6.38kB) Total ROM Size (Code + RO Data + RW Data) 17120 (16.72kB)( H7 s" s' P) J$ F! b * A2 M. R+ T% A! j* Z6 X- { } 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点)# n6 {/ C, l( G/ G Total RO Size (Code + RO Data) 11476 ( 11.21kB) Total RW Size (RW Data + ZI Data) 6512 ( 6.36kB)7 s9 N6 }: A6 A. T/ i! X( G, R& H Total ROM Size (Code + RO Data + RW Data) 11484 ( 11.21kB). h+ \2 a8 C1 d8 V IAR(printf选择full): 20 290 bytes of readonly code memory2 I( Y& L) G1 p/ Q8 C 142 bytes of readonly data memory8 K: `4 d8 Y5 y" x" h% V 6 677 bytes of readwrite data memory7 v$ q7 v: i1 O 5 V y( F9 R8 }. h IAR(printf选择small,新增small测试,2019-03-29,晚10点):0 P; }% e; w& j6 B6 b 16 734 bytes of readonly code memory 90 bytes of readonly data memory8 J( T' ~ K9 u3 Q# O* o 6 621 bytes of readwrite data memory Embedded Studio4.15使用GCC ; m! K4 Z1 M; X6 p Embedded Studio4.15使用CLANG $ _0 ?/ ]! J7 E% g, P. X4 p# O" F! a+ z8 }3 n3 { 总结,MDK的AC6生成的代码最小。 现在MDK5的AC6也是用的CLANG,总的来说,无论是编译速度还是生成代码大小,CLANG都表现出巨大优势。 当前HAL库使用AC6编译的警告有点多,可以选择使用AC5的警告临时屏蔽,提供的测试例子是采用的这种方式。# f! h! }( j9 X 0 I8 J1 X4 ?2 e4 F1 x2 p7 `# } 另外使用中文也会有很多警告,所以干脆使用UTF-8编码,就没有警告了,不过程序中的打印有中文的话,串口助手要使用支持UTF-8的,比如SecureCRT即可。 |
微信公众号
手机版
性能越来越强劲的Embedded Studio与MDK和IAR性能PK与模板制作方法+ T G1 B5 }" U) H/ X
https://www.stmcu.org.cn/module/ ... &fromuid=330695- T" H( f9 V2 Y
(出处: 论坛-意法半导体STM32/STM8技术社区)
1 e1 o4 W) _9 N+ S8 u
新增两个测试& Q$ [2 N; c& {
MDK5使用AC6:
Total RO Size (Code + RO Data) 15960 (15.59kB)
Total RW Size (RW Data + ZI Data) 6544 ( 6.39kB)% P, B( }7 V) U# `
Total ROM Size (Code + RO Data + RW Data) 15980 (15.61kB)" \2 P$ `' M2 [
MDK5使用AC6,开启Link-Time优化' r; W& M: D$ @& ^ C4 d
Total RO Size (Code + RO Data) 11476 ( 11.21kB)- J' ?4 X9 }" P- Y5 O0 r, _
Total RW Size (RW Data + ZI Data) 6512 ( 6.36kB)
Total ROM Size (Code + RO Data + RW Data) 11484 ( 11.21kB)8 B$ L% y' N1 G( r2 {& V
同时将IAR也是开启Link优化和其它能优化的地方(printf选择small lib)
16 734 bytes of readonly code memory
90 bytes of readonly data memory K! V0 n: a6 Q9 R1 T, A- @6 e
6 621 bytes of readwrite data memory
- S6 m, J$ K5 O7 t