专栏名称: Carson_Ho
走在产品路上的Android研究生
目录
相关文章推荐
开发者全社区  ·  大S的5亿遗产如何分配? ·  3 小时前  
开发者全社区  ·  迪丽热巴 ·  19 小时前  
开发者全社区  ·  陆家嘴某基金老登被曝光 ·  2 天前  
开发者全社区  ·  清华马翔宇再次举报 ·  3 天前  
开发者全社区  ·  王J林在崩溃边缘 ·  3 天前  
51好读  ›  专栏  ›  Carson_Ho

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

Carson_Ho  · 掘金  · android  · 2019-07-17 00:34

正文

前言

  • 目前,用户的流畅体验是用户能长期使用某个移动客户端应用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屏幕适配解决方案







请到「今天看啥」查看全文


推荐文章
开发者全社区  ·  大S的5亿遗产如何分配?
3 小时前
开发者全社区  ·  迪丽热巴
19 小时前
开发者全社区  ·  陆家嘴某基金老登被曝光
2 天前
开发者全社区  ·  清华马翔宇再次举报
3 天前
开发者全社区  ·  王J林在崩溃边缘
3 天前
经管之家  ·  学霸们都在用哪些科研工具?
7 年前
知心  ·  心怀感恩,皆是美好
7 年前
程序员大咖  ·  打断程序员的真实代价
7 年前