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

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

[复制链接]
baiyongbin2009 发布时间:2019-3-29 00:25
本帖最后由 baiyongbin2009 于 2019-3-30 01:29 编辑
1 G  c2 Q! H" V3 U7 Q+ e0 o
! @. {7 V$ n  E7 k; v1 h: x8 C鉴于MDK AC5(ARM Compiler5)编译STM32H7的HAL库带Browser Info时速度巨卡,电脑性能稍差点,编译个大点的工程能编译出几十分钟。特此做一个完整的测试+ k, f7 ^  O: V. T; M
测试条件:- D. M( Q1 Z; |+ [) E* r
1、IAR8.30开最高等级的最小代码优化,Printf选择small和full均做测试。  m5 V) m3 i! Y% q
2、MDK5.27正式版使用AC5开最高等级优化3,使用的MicroLib。
2 v' m2 ^2 L8 E  r3、MDK5.27正式版使用AC6开最小代码优化,使用的MicroLib。0 \; L# K6 g" ]
4、Embedded Studio4.15 beta版使用GCC开最高等级代码大小优化
, }! G4 C3 U$ P4 v" [: }9 F5、Embedded Studio4.15 beta版使用CLANG开最高等级代码大小优化8 P- z4 ~2 U: U8 `
6、全部开启多核并行编译7 b, u7 J) H  c- A/ ?) M
7、电脑配置是i3-3220,机械硬盘% i8 [% u4 @6 U5 T5 ~
8、暂未测试芯片实际执行性能。0 i* j2 O* b: }4 |7 D1 R
7 ^; t! c8 R, x: \9 |, E' J; j! z
注意,现在MDK的AC6和IAR打开后都会主动创建Browser Info,在窗口的最下方正中间有个提示。
9 l; ^" E) R5 D5 }3 e; e# g- ]' u& iMDK标识,要等待标识消失才可以使用go to def
) j+ R5 E& `0 f+ D7 A" ^
! Y/ w, D) _! |2 vIAR标识,要等到进度条到头才可以使用go to def6 ^' A9 m6 v: J4 `) p. n7 }
( Z, m$ V  U' T  i* l6 j* [! p3 D  q

$ f" R' C5 F0 P( U提供一个STM32H7的例程供大家测评:
  H" x9 M. V( M: A* N- u; y MDKIARES-USART.rar (3.47 MB, 下载次数: 188) $ I6 T7 y, |% X* s: H* h

8 E( T' k) }: p1 n4 Q2 H) c- l; E( u( S# S( k7 D/ Q

' ~8 p: Z9 Z( ^0 V先测试编译时间:# C& T9 N+ B# l: g1 V6 n7 y
MDK5使用AC5带Browser Info3 \3 h% n3 n  }' o4 C, k/ e
耗时8分51秒
; f! ?3 H1 F7 V, M+ R. m( B' b4 j
) ]; a& t& i# a0 VMDK5使用AC6带Browser Info5 X# w  h5 g! I5 G; y' l4 z
耗时1分07秒5 q* e. u4 s- ?# K" @9 n3 K

1 {& Q8 N% F8 g+ R4 [7 {8 E0 y. o( LIAR带Browser Info(IAR的编译速度很快,等Browser Info时间较长)
, R( v* e5 z1 t. V耗时2分03秒
' I" }5 \% h& L- k* S7 r0 n9 X7 @0 Z4 k2 H: {
Embedded Studio4.15使用GCC带Browser Info" P: ^+ Y, g9 N# G1 g; |
耗时38秒
- F1 @, }' b  d3 K; V( E+ Z- e! c1 _! m3 C6 m
Embedded Studio4.15使用CLANG带Browser Info0 W) [- v, k9 i( o
耗时21秒
! M. X* {9 e4 K) ?& d$ g$ W! _
1 u. U. t# ]8 l: I总结,Embedded Studio使用CLANG完胜其它方式。
, A, Z1 \: l: O! T0 t; _& B( ?4 G6 d7 P2 y2 f8 @5 D
生成代码大小
9 M- y. z  ^6 y0 y* E8 C) _MDK5使用AC5:+ X( A$ D* W9 B! u% v
Total RO  Size (Code + RO Data)                    17060 (16.66kB)
) N6 Q7 [6 C8 J3 ]/ Y1 MTotal RW  Size (RW Data + ZI Data)                 6536 (  6.38kB)7 I* ?  J$ `! g- H2 a0 t, o9 ]
Total ROM Size (Code + RO Data + RW Data)  17120 (16.72kB)
6 ?. ?# H3 ]  X6 A
6 d' D) B; t$ w! @! KMDK5使用AC6:; e( }2 Q5 D8 H: h+ i: ?" h
Total RO  Size (Code + RO Data)                    15960 (15.59kB)3 d$ S7 {% E1 `( w& {8 X( a2 A( @% C
Total RW  Size (RW Data + ZI Data)                 6544 (  6.39kB)1 w4 Y4 C7 O; ?4 I5 |% h" ^% W
Total ROM Size (Code + RO Data + RW Data)  15980 (15.61kB)
9 ]* d3 l5 L! y1 O% F) G$ }- A6 Q
2 H) S+ p9 t2 c# X6 b9 MMDK5使用AC6,开启Link-Time优化(2019-03-29,晚11点)$ d" i: i& {: Z- e8 a* Q7 T
Total RO  Size (Code + RO Data)                    11476 (  11.21kB)
8 o3 ]* W% u) j6 }) d/ C3 T5 wTotal RW  Size (RW Data + ZI Data)                 6512 (   6.36kB)
6 u4 y: A& y" V6 o* D# iTotal ROM Size (Code + RO Data + RW Data)  11484 (  11.21kB)& M# p: {5 h! v3 h3 ~

" H! N" d2 I& N1 o2 ~4 VIAR(printf选择full):
# ^2 |/ e% P; B3 P0 Y7 H1 d- h" J20 290 bytes of readonly  code memory
/ ?# g6 Y# K$ b( K. f    142 bytes of readonly  data memory
  F$ M# g1 w3 C5 B6 677 bytes of readwrite data memory
: p; L) p1 I! O* Y% I* F5 N0 B4 m  }9 c
IAR(printf选择small,新增small测试,2019-03-29,晚10点):) a+ k  W6 q1 d
16 734 bytes of readonly  code memory
# o% O/ @9 Q9 _* Z      90 bytes of readonly  data memory
" S" u2 c; \. k0 O  6 621 bytes of readwrite data memory( k$ P& o% H1 M: F

& Z; ^$ U# E0 [5 H" U, p) f9 n) `7 zEmbedded Studio4.15使用GCC
$ u$ C# O- G6 a6 B+ X1 R) q % G# w4 _0 [* w0 k; S. h3 H% b
; s* n" O" m" ?  l. g# C6 H( q
Embedded Studio4.15使用CLANG
9 g2 [' _, I3 x1 T $ m6 G2 @) R; A' F) ~/ {

  s, I: L7 p8 @/ z. b) N总结,MDK的AC6生成的代码最小。
& H' W! x0 x# d: k' n3 Y. n. C
% q' d: i5 l$ l  L  d  e现在MDK5的AC6也是用的CLANG,总的来说,无论是编译速度还是生成代码大小,CLANG都表现出巨大优势。
" {. @' t8 B6 K8 p8 t  q& m( D1 P" Q1 K+ G- q/ u8 y( @
当前HAL库使用AC6编译的警告有点多,可以选择使用AC5的警告临时屏蔽,提供的测试例子是采用的这种方式。
4 z/ w! J( l/ Z2 E- F9 e; \
+ L/ W3 s; h; S) a* E; d另外使用中文也会有很多警告,所以干脆使用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来玩玩
- q6 [3 E2 s. d; z
橡皮筋儿 回答时间: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
5 F: B& M1 t+ m2 r大佬,请问下Embedded Studio用起来怎样?毕竟MDK的注册机明年就到期了

5 O+ u5 a' s+ ]7 Z3 \. x0 `性能越来越强劲的Embedded Studio与MDK和IAR性能PK与模板制作方法. l$ j3 s" ], }4 ~. c  y
https://www.stmcu.org.cn/module/ ... &fromuid=330695
+ p8 U+ V5 d5 D# o(出处: 论坛-意法半导体STM32/STM8技术社区)
( \3 H  G0 P3 a7 ^
长春的风 回答时间: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 编辑
" ~) J# v3 N9 `7 E" V" x: x2 Y8 O3 l& j( F( B. U5 x+ ?
新增两个测试2 {" j. d% d, R

. M: q2 z6 ]- S& IMDK5使用AC6:* h# n1 \, ?* @! V; E0 V
Total RO  Size (Code + RO Data)                    15960 (15.59kB)' \# z- T+ N& c: a) u
Total RW  Size (RW Data + ZI Data)                 6544 (  6.39kB)" z/ m8 q+ e' a
Total ROM Size (Code + RO Data + RW Data)  15980 (15.61kB)
3 x3 t6 b9 Y( h  X! a( \) z9 R3 d( d
MDK5使用AC6,开启Link-Time优化

5 a; b1 A) O3 BTotal RO  Size (Code + RO Data)                    11476 (  11.21kB)
+ N5 j; C8 R" f% e# \Total RW  Size (RW Data + ZI Data)                 6512 (   6.36kB)! I1 i" H; O' A8 X
Total ROM Size (Code + RO Data + RW Data)  11484 (  11.21kB)
+ A6 H8 C4 N4 {# | $ M* L7 t( v2 L, o# W' q' J" {

/ {! J& Q) T2 k3 \, c1 E同时将IAR也是开启Link优化和其它能优化的地方(printf选择small lib)& P2 o: s5 D  q' ^
16 734 bytes of readonly  code memory
5 r" B$ ]% i3 Z2 Q: y/ @" O/ t      90 bytes of readonly  data memory, \( c9 L- r* Z( l4 q  J) T
  6 621 bytes of readwrite data memory6 O' v* [/ g3 q/ y6 f# l
4 L4 r7 z+ o% i% H" c

8 \2 {; \. [, I; U5 c! x3 Y* {$ g; f+ e" z2 k9 T$ I
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 手机版