美文网首页FlutterFlutter
Flutter、RN、原生对比(Android端)

Flutter、RN、原生对比(Android端)

作者: NullPointer__ | 来源:发表于2019-07-24 13:30 被阅读126次
    以往的认知结果:
    比较内容 Flutter RN 原生
    平台实现 通过Dart虚拟机编译成机器码 Virtual Dom映射到原生View,通过ART虚拟机编译成机器码 通过ART虚拟机编译成机器码
    绘制引擎 Skia JS V8+Skia/OpenGL ES Skia/OpenGL ES
    使用语言 Dart React Java/Kotlin
    上手难度 一般 /
    框架程度 较重 一般
    社区 丰富,谷歌力捧 活跃,FaceBook支持 庞大,谷歌支持
    软件发布 支持热更新(暂未开放) 支持热更新 可热更新(有点麻烦且不稳定)
    性能测试过程:

    分别用Flutter、RN、原生开发三个项目,只有一个列表页面,10000条数据,在三款低中高端机型中测试。


    Demo内容
    APK体积大小

    APK体积占用情况:


    flutter.jpg
    RN.jpg
    native.jpg
    启动时间 初始内存占用
    操作片刻后的内存占用
    CPU峰值

    通过性能测试得出下表:

    比较内容 Flutter RN 原生
    APK大小 5.5M 6.6M 1.4M
    启动时间 冷启动319ms,热启动152ms 冷启动243ms,热启动71ms 冷启动181ms, 热启动74.8ms
    内存-cpu-魅蓝Metal 初始30M ,滑动5000稳定后32M,cpu22% 初始38M,滑动5000,稳定在60M,cpu45% 初始:7.6M ,滑动5000条稳定在12M,cpu10%
    内存-cpu-魅族Pro5 初始85M ,滑动5000条稳定后110M,cpu12% 初始56M,滑动5000,稳定在104M,cpu22% 初始:29.5M ,滑动5000条稳定在42M,cpu7%
    内存-cpu-华为P20Pro 初始99M ,滑动5000条稳定110M,cpu12% 初始63M,滑动5000,稳定在80M,cpu22% 初始:25M ,滑动5000条稳定在32M,cpu8%
    主观感受 无卡顿 滚动100条之后有卡顿 丝滑般

    性能测试结论:

    以上只是一个简单demo通过测试得出的数据结果,仅能从大体上比较出三者的性能,可能在实际的项目中会有些出入。
    1、包体积原生比较小,Flutter和RN不相上下(Ios系统需要引入Skia库,最终包体积Flutter会明显大于RN),由于Flutter和RN框架中需要一些C++依赖库,导致包体积比原生大了很多。
    2、启动时间,Flutter(冷热启动时间)>RN=原生
    3、内存占用,在高端手机上,flutter占用内存是大于RN的,但是低端手机Flutter的内存占用会低于RN,RN内存占用不稳定,页面刚生成的时候内存占用会高一点, 之后缓慢回落。
    3、CPU占用,RN明显高于Flutter和原生,这会导致手机性能降低、耗电量增加、发热更厉害
    4、主观感受,Flutter要比RN更加流畅,体验感更好,但是和原生仍有不小差距,不过Flutter还很年轻,官方宣称其性能会接近原生,甚至超过原生体验,随着Google不断的改进相信在不远的将来会实现这个可能。

    相关文章

      网友评论

        本文标题:Flutter、RN、原生对比(Android端)

        本文链接:https://www.haomeiwen.com/subject/mjotrctx.html