Hummer Standard Benchmarks
此项目是一个用于测试各家跨端开发框架 App 各项 benchmark 数据指标的一个示例工程集合,包括了基于五种不同的跨端开发框架开发的示例 APP 工程项目(Native 、Hummer 、Tenon 、ReactNative 和 Flutter ),每个项目都包含了 Android 和 iOS 两端,并分别对以下两大方面做了对比基准测试:
我们分别对基于五种不同的跨端开发框架开发的示例 APP 工程项目(Native 、Hummer 、Tenon 、ReactNative 和 Flutter ),在单架构模式下(Android: armeabi-v7a 、iOS: arm64 ),编译生成的 Release 包做了包大小的对比测试,以下是具体测试版本和测试结果。
Hummer(Android): 'com.didi.hummer:hummer:0.3.18'
Hummer(iOS): 0.2.3
ReactNative: 'com.facebook.react:react-native:0.63.4'
Weex: 'com.taobao.android:weex_sdk:0.26.0'
Flutter: 1.22.6
/package_size
平台
Native
Hummer
ReactNative
Weex
Flutter
Android
2.5M
4.2M
8.5M
6.9M
5.2M
iOS
0.097M
0.697M
1.2M
0.997M
5.9M
我们分别对基于五种不同的跨端开发框架开发的示例 APP 工程项目(Native 、Hummer 、Tenon 、ReactNative 和 Flutter ),针对四种不同的测试用例(见下面用例介绍),对四组不同维度的性能指标(首屏渲染时间 、CPU 、内存和帧率 ),分别做了各自的 benchmark 性能测试,并且保存了相关测试数据。
用例1: 列表基准测试(Scroller)。列表中500行视图,每一行视图中包含5个子视图,测试快速滚动整个列表时的性能。
用例2: 列表视图基准测试(List)。列表中1000行视图,每一行视图中包含5个子视图,测试快速滚动整个列表时的性能。
用例3: 动画基准测试。500个视图,每个视图分别做5种动画中的其中1种,测试所有动画同时执行时的性能。
用例4: 拖拽基准测试。测试在屏幕范围内拖拽一个视图时的性能。
系统: Android 10
型号: vivo X27 Pro - V1836A
vivo ROM: Funtouch OS_10 PD1836_A_6.20.1
Hummer(Android): 'com.didi.hummer:hummer:0.3.18'
Hummer(iOS): 0.2.3
Tenon: 1.2.1
Weex: 'com.taobao.android:weex_sdk:0.26.0'
ReactNative: 'com.facebook.react:react-native:0.63.4'
Flutter: 1.22.6
/performance
下面是以 Native 用例为例做的页面截图,其他 App 开发框架的用例运行页面效果均与 Native 用例相同。
无论是 Android 端还是 iOS 端,Hummer 和 Tenon 的整体表现,基本都很接近原生性能。
用例1 (Scroller)
Native
Hummer
Tenon
ReactNative
Weex
Flutter
页面渲染时间(首次, ms)
741
1835
2617
1664
2834
862
页面渲染时间(非首次, ms)
590
1560
2182
1508
2579
568
CPU(%)
7.53
10.72
10.69
11.7
10.11
9.94
内存(M)
114.89
133.45
137.94
167.8
178.5
210.17
帧率(fps)
58
50
51
47
49
31
用例2 (List)
Native
Hummer
Tenon
ReactNative
Weex
Flutter
页面渲染时间(首次, ms)
334
387
559
545
3477
535
页面渲染时间(非首次, ms)
170
215
335
368
3238
215
CPU(%)
4.07
4.85
6.85
14.43
5.08
10.44
内存(M)
58.14
64.62
70.48
173.89
224.08
152.38
帧率(fps)
60
60
60
58
60
59
用例3 (动画)
Native
Hummer
Tenon
ReactNative
Weex
Flutter
页面渲染时间(首次, ms)
345
641
1044
778
1881
538
页面渲染时间(非首次, ms)
195
385
730
636
1394
224
CPU(%)
14.27
15.48
15.3
33.31
17.22
18.58
内存(M)
86.9
88.97
102.53
118.75
102.56
172.28
帧率(fps)
30
30
30
31
29
30
用例4 (拖拽)
Native
Hummer
Tenon
ReactNative
Weex
Flutter
页面渲染时间(首次, ms)
253
310
342
425
396
514
页面渲染时间(非首次, ms)
168
175
183
287
185
213
CPU(%)
3.03
5.19
6
7.51
5.96
6.94
内存(M)
55.55
63.16
66.5
102.17
66.57
142.21
帧率(fps)
60
60
59
60
60
60
用例1 (Scroller)
Native
Hummer
Tenon
ReactNative
Weex
Flutter
页面渲染时间(ms)
1727
1970
2249
2358
1694
806
CPU(%)
1.73
2
2
5.45
3.18
8.18
内存(M)
116
149
156.27
177.27
144
125.18
卡顿率(ms/s)
1.667
1.667
1.668
1.678
1.668
0
用例2 (List)
Native
Hummer
Tenon
ReactNative
Weex
Flutter
页面渲染时间(ms)
469
545
684
975
4141
608
CPU(%)
3.36
5.64
5.82
18.45
9.91
8.27
内存(M)
9.36
21.18
23.55
88.36
91.55
91.82
卡顿率(ms/s)
0
0
4.16
7.59
3.419
2.902
用例3 (动画)
Native
Hummer
Tenon
ReactNative
Weex
Flutter
页面渲染时间(ms)
773
905
1131
1353
1535
655
CPU(%)
1.55
2
1.91
30.55
6.73
8.45
内存(M)
6
13
17.27
26
56.73
81.73
卡顿率(ms/s)
0
0
0
0
0
0
用例4 (拖拽)
Native
Hummer
Tenon
ReactNative
Weex
Flutter
页面渲染时间(ms)
539
563
578
922
545
708
CPU(%)
2
5.55
6.18
7.55
7.18
5
内存(M)
5
10
12
14
16
54
卡顿率(ms/s)
0
0
0
0
0
0