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

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

[复制链接]
baiyongbin2009 发布时间:2019-3-29 00:25
本帖最后由 baiyongbin2009 于 2019-3-30 01:29 编辑 & v3 n4 X3 p- @6 b1 C+ N

, `$ l: s; C: k4 p5 P  ~# }鉴于MDK AC5(ARM Compiler5)编译STM32H7的HAL库带Browser Info时速度巨卡,电脑性能稍差点,编译个大点的工程能编译出几十分钟。特此做一个完整的测试
& ]+ Y, p# A9 l' L# H! g测试条件:
' c5 O4 K# @. m( F2 p& c1、IAR8.30开最高等级的最小代码优化,Printf选择small和full均做测试。
7 y6 B9 v, F1 Y6 Z" R) j2、MDK5.27正式版使用AC5开最高等级优化3,使用的MicroLib。6 }  w, D) v- b$ n# b. @
3、MDK5.27正式版使用AC6开最小代码优化,使用的MicroLib。
/ y+ n. k5 h1 [- }; w# H* W4、Embedded Studio4.15 beta版使用GCC开最高等级代码大小优化1 U  i1 d, Y! j6 a$ ^
5、Embedded Studio4.15 beta版使用CLANG开最高等级代码大小优化
& j! C! g9 v% `( D- a) f6、全部开启多核并行编译
# s8 z( T! K6 b7、电脑配置是i3-3220,机械硬盘" c/ s8 a3 J. |- q
8、暂未测试芯片实际执行性能。
5 e, i" R7 R1 ^/ S* s0 y" ^1 f/ J/ k! C- T2 @
注意,现在MDK的AC6和IAR打开后都会主动创建Browser Info,在窗口的最下方正中间有个提示。
. D- l6 Y: m; K+ L% CMDK标识,要等待标识消失才可以使用go to def
4 u# T4 ?9 K; b. w! ^3 I
1 f7 p$ c) @1 ?! p) c6 KIAR标识,要等到进度条到头才可以使用go to def
+ z7 S6 S$ Q/ B6 C8 Z6 p9 h ; {3 O- C& ^2 Q0 B- m3 o
! v2 \; b: @; C0 b
提供一个STM32H7的例程供大家测评:
. R: E' B7 ~! X1 i2 k, r+ { MDKIARES-USART.rar (3.47 MB, 下载次数: 188)
( f% W& @; M6 u7 F( r; A ) T! `) f# G3 b
" q- k8 x; S9 ]
% w, I  ]% K# M$ B% A* f
先测试编译时间:# U) e1 C8 a/ L1 C# R) i
MDK5使用AC5带Browser Info
/ R( |" E) G, g2 V( ~) G1 ]0 {耗时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秒
* E) @& o( r8 d9 F) b% A8 ]' }9 y$ l
IAR带Browser Info(IAR的编译速度很快,等Browser Info时间较长)
' c& i* x: m5 j" J+ k- Q: H耗时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
6 W1 T/ ?. T) |( _7 z耗时38秒. A& L: E! U: V7 U2 T: W

1 [- m# U3 e. M$ O: W0 j4 qEmbedded Studio4.15使用CLANG带Browser Info
5 p- O( t4 N0 a( e8 G耗时21秒
) q* B3 J5 v$ _# g7 s. B! V1 U
$ d& H& c* ^1 x& l3 Y3 J4 p总结,Embedded Studio使用CLANG完胜其它方式。
% H) p# k: F% G5 y8 h2 R! U/ J* B1 q- N/ ^! r
生成代码大小
2 }. ^# q& r# V# P6 mMDK5使用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)
2 l% p$ |, c4 ATotal 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:
3 d# l3 Q. K0 |: }Total RO  Size (Code + RO Data)                    15960 (15.59kB)
0 K. |2 L, y; H7 [* }' hTotal RW  Size (RW Data + ZI Data)                 6544 (  6.39kB)
4 j3 Z. L) z" s2 t3 u: n( ~, I( lTotal ROM Size (Code + RO Data + RW Data)  15980 (15.61kB)
4 W% N/ X' a$ a2 q. Q: U7 Q- d: S5 Y
0 c# d. I8 G; Y: R* cMDK5使用AC6,开启Link-Time优化(2019-03-29,晚11点)# n6 {/ C, l( G/ G
Total RO  Size (Code + RO Data)                    11476 (  11.21kB)
3 V( W5 B& F0 T! N2 s- q! h6 pTotal 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

& G" N3 S0 {2 _; o7 YIAR(printf选择full):
$ K1 o9 {7 K1 h3 g; ?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
) x9 x, S1 |- v! O1 \% S- k& t8 ?+ L      90 bytes of readonly  data memory8 J( T' ~  K9 u3 Q# O* o
  6 621 bytes of readwrite data memory
) T8 D" `+ s9 p% \. o' r$ B
/ c3 A/ K& l3 p- a5 Y: \  o8 QEmbedded Studio4.15使用GCC
6 d8 l8 B8 p# _0 P5 ^, R8 A
/ _' u: n" P2 Y" R; m! K4 Z1 M; X6 p
Embedded Studio4.15使用CLANG
3 g- {/ |3 S* a! s8 h/ @- ^ $ _0 ?/ ]! J7 E% g, P. X
4 p# O" F! a+ z8 }3 n3 {
总结,MDK的AC6生成的代码最小。
( y/ T0 Q6 e6 D. X. S5 v+ B* u: d3 r) H
现在MDK5的AC6也是用的CLANG,总的来说,无论是编译速度还是生成代码大小,CLANG都表现出巨大优势。
3 V; J$ F5 N! P; r& T
  A1 O! Q# |7 E2 }当前HAL库使用AC6编译的警告有点多,可以选择使用AC5的警告临时屏蔽,提供的测试例子是采用的这种方式。# f! h! }( j9 X
0 I8 J1 X4 ?2 e4 F1 x2 p7 `# }
另外使用中文也会有很多警告,所以干脆使用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来玩玩1 L- W  @& ]# Y! E3 U( ?* w0 S
橡皮筋儿 回答时间: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$ a8 F; z: w6 w* c  P0 I
大佬,请问下Embedded Studio用起来怎样?毕竟MDK的注册机明年就到期了

5 V& R6 [: C( H1 b+ |性能越来越强劲的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技术社区)
& m. z/ K8 n7 P
长春的风 回答时间: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 编辑 , P3 m- K' {3 E& o9 X5 Q6 w
1 e1 o4 W) _9 N+ S8 u
新增两个测试& Q$ [2 N; c& {

& T% h0 m; t% U/ ]! Z1 V+ aMDK5使用AC6:
# I6 U. Z* U1 X- ]9 U1 p. xTotal RO  Size (Code + RO Data)                    15960 (15.59kB)
- R2 q, p/ C$ @" c% x% V+ _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 [

) _! q) B& V7 JMDK5使用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)
6 m" W4 Z8 }0 W9 nTotal ROM Size (Code + RO Data + RW Data)  11484 (  11.21kB)8 B$ L% y' N1 G( r2 {& V

  g5 w- x: ?! s) ~2 {
8 u' [0 D/ L# ]3 R同时将IAR也是开启Link优化和其它能优化的地方(printf选择small lib)
! v1 L+ i7 x) @+ ~7 x6 k16 734 bytes of readonly  code memory
/ E7 S) O; @( A0 i$ J      90 bytes of readonly  data memory  K! V0 n: a6 Q9 R1 T, A- @6 e
  6 621 bytes of readwrite data memory
7 z/ ^- Z3 Y/ u7 A$ ~3 f- S6 m, J$ K5 O7 t
- o* O: l" m1 F3 M8 Z6 _6 C

) Q; m; ^+ o& Z) S$ a  c
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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版