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

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

[复制链接]
baiyongbin2009 发布时间:2019-3-29 00:25
本帖最后由 baiyongbin2009 于 2019-3-30 01:29 编辑
  I. o6 ]. ?5 [- E
: p  x  }" B, y8 L% ^鉴于MDK AC5(ARM Compiler5)编译STM32H7的HAL库带Browser Info时速度巨卡,电脑性能稍差点,编译个大点的工程能编译出几十分钟。特此做一个完整的测试+ A% M" t6 ^7 l( S/ p
测试条件:0 {0 W/ `+ V: d: d! j; j* c% E: w
1、IAR8.30开最高等级的最小代码优化,Printf选择small和full均做测试。
3 Y6 @1 H7 d! X' y2、MDK5.27正式版使用AC5开最高等级优化3,使用的MicroLib。9 K" W! ?9 I, s6 {
3、MDK5.27正式版使用AC6开最小代码优化,使用的MicroLib。
7 k0 m4 j% U& _4、Embedded Studio4.15 beta版使用GCC开最高等级代码大小优化" s: j6 i' d2 q" Q; f4 R
5、Embedded Studio4.15 beta版使用CLANG开最高等级代码大小优化
) v* w* Y- j$ i+ v6、全部开启多核并行编译
8 A$ b! {+ E3 D2 p- v7、电脑配置是i3-3220,机械硬盘6 ^4 H, @- e( c% Q) }
8、暂未测试芯片实际执行性能。
7 |8 V% o! a$ S2 I3 ^- R& V* s3 p/ N$ b6 e; X  @5 `( r
注意,现在MDK的AC6和IAR打开后都会主动创建Browser Info,在窗口的最下方正中间有个提示。8 z# a% L, `( J2 r
MDK标识,要等待标识消失才可以使用go to def$ N/ h! b$ G8 u5 @2 U  I2 U
+ W! t* q$ I7 p' l' m
IAR标识,要等到进度条到头才可以使用go to def6 I% ]1 e# i& _, o! j9 X2 t8 Q1 D

. y0 Q% h5 b2 O2 r" m% j' o% H0 J- n7 a( k1 b8 `
提供一个STM32H7的例程供大家测评:, B6 N( f, z* |7 W# _
MDKIARES-USART.rar (3.47 MB, 下载次数: 188)
1 D5 e# i- m4 r6 s' G
! W# g, R! E1 u1 l- R
6 Z" ~9 P6 O: V. G, w2 e
/ f3 A, L3 k$ W4 `先测试编译时间:/ i2 W, o9 m. M" g+ l7 b
MDK5使用AC5带Browser Info5 Q; v6 V+ Y5 [0 `" ]
耗时8分51秒
3 V  L: E0 Q9 R9 A- y, W9 ]( H- T* `) M  L
MDK5使用AC6带Browser Info
& w5 H  E9 r, Z3 {  V" U, v耗时1分07秒
1 D+ X5 {1 H7 i% U. W" S2 _0 @% ]( i! e
IAR带Browser Info(IAR的编译速度很快,等Browser Info时间较长)+ C1 Q- q8 B# Y+ g: p
耗时2分03秒% D8 \9 a: t' Q( d
6 M" \. ?. t* [4 |' G$ w( \
Embedded Studio4.15使用GCC带Browser Info2 F+ w2 F- o" R
耗时38秒
8 Q4 Z( b9 R0 F% v1 Z' ]$ ?
( g  L! C; q% @5 A) q0 L) {" g: @Embedded Studio4.15使用CLANG带Browser Info
9 m1 {' L: u& ~; w9 M耗时21秒' E' L* K# E. Z
8 u; z. L" P: J' y9 N! m1 @
总结,Embedded Studio使用CLANG完胜其它方式。
, k" Q2 S5 K" w# F- ?1 X% Z. p. U1 a& e8 y! R- `& {# p, t
生成代码大小5 R8 F0 t# {6 ?8 v" ?9 p# n
MDK5使用AC5:
7 C' U7 F$ e- w0 W' C( V  Y- ]8 Q, ZTotal RO  Size (Code + RO Data)                    17060 (16.66kB)
: X8 J% z9 _9 P$ C4 ~6 KTotal RW  Size (RW Data + ZI Data)                 6536 (  6.38kB)5 Q& u7 k6 F3 |" G9 Y0 E/ {3 P
Total ROM Size (Code + RO Data + RW Data)  17120 (16.72kB)
9 N, f0 q  A4 S1 q. h" J( N. w1 J+ M& \3 W. ?! M- I5 r
MDK5使用AC6:' B" y! _( S9 I7 A& O( @
Total RO  Size (Code + RO Data)                    15960 (15.59kB)
" A2 j" u2 v! x6 f3 j5 \Total RW  Size (RW Data + ZI Data)                 6544 (  6.39kB)# ^4 g. Z" }6 N$ c& a0 _
Total ROM Size (Code + RO Data + RW Data)  15980 (15.61kB)
& t/ Q! b0 T1 Q; l! v$ _" Q7 C# r9 C9 w( T, A
MDK5使用AC6,开启Link-Time优化(2019-03-29,晚11点)9 s; [% T: x% _# \* `+ x2 [
Total RO  Size (Code + RO Data)                    11476 (  11.21kB)6 ^7 K- B7 w8 H6 O1 M
Total RW  Size (RW Data + ZI Data)                 6512 (   6.36kB)" A! N) }1 A! y5 S
Total ROM Size (Code + RO Data + RW Data)  11484 (  11.21kB)
9 N! @- g3 V7 {- q, B& h0 O7 [
  U8 X2 u$ Z& _IAR(printf选择full):
7 Q) i: |& ~  s! s/ E20 290 bytes of readonly  code memory7 W; y2 v  X7 x! I; F( L
    142 bytes of readonly  data memory/ ~( H8 N+ j# j. [: o' g
6 677 bytes of readwrite data memory
) W7 x, R) }3 x) B2 u" n8 J+ `0 O8 d$ o- @; o/ \8 V1 p
IAR(printf选择small,新增small测试,2019-03-29,晚10点):7 ~" |/ _6 S/ E6 J, x/ @
16 734 bytes of readonly  code memory+ ]6 J& m+ w9 I
      90 bytes of readonly  data memory8 i3 y% [6 B9 V$ s0 s2 h$ S3 g
  6 621 bytes of readwrite data memory( P1 j0 L1 D8 u0 Q3 j9 W6 _) Q

5 z4 o0 L& P9 ^( aEmbedded Studio4.15使用GCC
8 M. ?5 n- L$ q# i
& O* F( a9 k- |( {) ]9 F7 z) H0 t5 o( p; E7 n) `% K3 u2 F
Embedded Studio4.15使用CLANG3 Z( b" D# j, u$ v. U/ ~

- V1 Q. Q7 ^/ ]7 T& `
' k# H1 s( u! E总结,MDK的AC6生成的代码最小。( |; d4 a6 h# [( n+ u- c- ?

2 S" t. y- |- g2 d, A8 I5 d8 ]( P& l现在MDK5的AC6也是用的CLANG,总的来说,无论是编译速度还是生成代码大小,CLANG都表现出巨大优势。+ P; w- \: n) h- d5 {3 Q

2 g% O  M3 {6 p当前HAL库使用AC6编译的警告有点多,可以选择使用AC5的警告临时屏蔽,提供的测试例子是采用的这种方式。
4 e8 s4 W: P: C! O6 O2 [2 @! d( f& r
另外使用中文也会有很多警告,所以干脆使用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来玩玩
! z$ j: M1 P  ]5 @  Y. l
橡皮筋儿 回答时间: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:464 `- d, M0 t: Z! C
大佬,请问下Embedded Studio用起来怎样?毕竟MDK的注册机明年就到期了

  q; x! ^% Y: v% M! [性能越来越强劲的Embedded Studio与MDK和IAR性能PK与模板制作方法$ X- T) v% a; h# ~/ a" ]
https://www.stmcu.org.cn/module/ ... &fromuid=3306954 X1 `4 \2 ]( L. ~0 T" A
(出处: 论坛-意法半导体STM32/STM8技术社区): c. `! e7 U3 f2 Q
长春的风 回答时间: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 编辑   {6 W# I0 G# Q- H
& X2 V; F% `0 z9 p( D8 I2 p7 p7 \
新增两个测试
1 R7 N! S6 O/ c1 z- _; [' W5 L4 b# d6 k& y* A8 f
MDK5使用AC6:+ R; `* I1 W- L5 ~; k
Total RO  Size (Code + RO Data)                    15960 (15.59kB): X$ j- Z6 ]0 P$ s8 S: @/ H8 {7 ]
Total RW  Size (RW Data + ZI Data)                 6544 (  6.39kB)
9 j( d% v1 C  bTotal ROM Size (Code + RO Data + RW Data)  15980 (15.61kB)
; E6 e9 \/ b7 K. C3 D  a* L0 F1 E
MDK5使用AC6,开启Link-Time优化
5 a. S$ k4 l3 |3 {/ ?" z/ ]
Total RO  Size (Code + RO Data)                    11476 (  11.21kB)
4 u" ]! N$ q2 ~6 W( dTotal RW  Size (RW Data + ZI Data)                 6512 (   6.36kB)2 Y9 I0 V! x( j1 k/ d& K, ]  Y
Total ROM Size (Code + RO Data + RW Data)  11484 (  11.21kB)6 d, _$ ?3 }; y! [8 n. }, t* E7 L& C

( @6 o4 |4 }5 Z, e/ C
. P# s7 l9 n+ ^, [1 x同时将IAR也是开启Link优化和其它能优化的地方(printf选择small lib)  }1 P9 O. `& J6 O+ V* ~
16 734 bytes of readonly  code memory  C7 Q* ^" }3 f
      90 bytes of readonly  data memory! B) r: q: p9 d. q2 V+ f* t0 S& b
  6 621 bytes of readwrite data memory
" n4 T+ W; U( e1 I$ t) ^. B8 G8 ]
1 v; H0 I: [/ p7 g- X2 T3 X% V
: }; C$ T" l  A5 @8 \, E! b$ N0 j8 e: O7 u0 }$ 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版