美文网首页Android进阶之路Android技术知识Android开发经验谈
技术栈中的爱马仕?Facebook发布全新JavaScript引

技术栈中的爱马仕?Facebook发布全新JavaScript引

作者: Carson带你学安卓 | 来源:发表于2019-07-17 08:25 被阅读2565次

    前言

    • 目前,用户的流畅体验是用户能长期使用某个移动客户端应用App的重要指标之一,因此,移动客户端应用App的性能问题备受关注。
    • 最近,一个崭新的JavaScript引擎面世:Hermes,它是Facebook在Chain React 2019 大会上发布 & 用于在React Native应用提高性能的,今天,我将进行全面介绍。


      示意图

    目录

    示意图

    1. 简介

    Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎

    已开源 & 用于移动端React Native应用的集成

    示意图

    2. 作用

    2.1 背景

    • 用户的流畅体验是用户能长期使用某个移动客户端应用App的重要指标之一,因此,移动客户端应用App的性能问题备受关注
    • 针对React Native应用,流畅度等性能问题一直被人诟病

    2.2 问题

    Facebook基于多方性能数据分析,发现JavaScript引擎本身就是影响React Native应用启动性能的重要因素

    2.3 解决方案

    构建一个全新的JavaScript引擎,针对React Native应用,去提高移动客户端应用App的性能

    特别注意:Hermes主要面向移动端React Native应用的性能优化,对浏览器 & Node.js 等服务端基础架构并不适用。


    3. 性能提升表现

    对于React Native应用(基于JavaScript引擎)来说,用户感知最明显的性能体验包括:

    • 应用程序可用的时间(TTI)
    • 安装包下载大小(Android APK 大小)
    • 内存利用率

    根据Facebook给出的官方性能优化性能数据如下:


    示意图

    从上述数据可知,Hermes引擎提升性能较为明显:

    • 在应用程序可用的时间上,Hermes能提升一倍的时间效率
    • 在安装包下载大小下,Hermes能减少50%的大小
    • 在内存利用率上,Hermes能节省30%的内存使用

    4. 设计原理

    为了提升React Native应用的性能表现,Hermes引擎的设计主要是从是两个方面入手:编译方式 & 垃圾回收策略

    4.1 编译方式

    a. 字节码预编译
    示意图
    b. 无JIT编译
    示意图

    4.2 垃圾回收策略

    示意图

    5. 使用特点

    在实际使用Hermes时,具备3个优点:懒编译、兼容性好 & 调试体验好,具体如下:


    示意图
    • 特别注意:在实际使用Hermes时,需对build.gradle文件做更改 & 重新编译
    project.ext.react = [
      entryFile: "index.js",
      enableHermes: true
    ]
    

    6. 总结

    • 本文全面讲解了Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎:Hermes
    • 下面我将继续对 Hermes引擎中的知识进行深入讲解 ,感兴趣的同学可以继续关注本人博客Carson_Ho的开发笔记

    请点赞!因为你的鼓励是我写作的最大动力!

    相关文章阅读
    Android开发:最全面、最易懂的Android屏幕适配解决方案
    Android事件分发机制详解:史上最全面、最易懂
    Android开发:史上最全的Android消息推送解决方案
    Android开发:最全面、最易懂的Webview详解
    Android开发:JSON简介及最全面解析方法!
    Android四大组件:Service服务史上最全面解析
    Android四大组件:BroadcastReceiver史上最全面解析


    欢迎关注Carson_Ho的简书!

    不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度

    相关文章

      网友评论

        本文标题:技术栈中的爱马仕?Facebook发布全新JavaScript引

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