Facebook发布全新JavaScript引擎:Hermes
摘要: JS引擎开始升级了...
- 原文:技术栈中的爱马仕?Facebook发布全新JavaScript引擎:Hermes
- 作者:Carson_Ho
Fundebug经授权转载,版权归原作者所有。
前言
- 目前,用户的流畅体验是用户能长期使用某个移动客户端应用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的开发笔记
关于Fundebug
Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有阳光保险、核桃编程、荔枝FM、掌门1对1、微脉、青团社等众多品牌企业。欢迎大家免费试用!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
日志服务数据加工: 查询字符串语法
概述 搜索字符串是ETL语言中用于快速过滤的语法, 语法基本上与日志服务的查询语法, 以及lucene 语法相同. 可以极大简化数据加工的条件判断的逻辑. 相关函数 如下函数会使用到查询字符串语法. 类型 函数 使用场景 表达式函数-事件判断函数 e_search 使用查询字符串判断事件的字段值是否满足特定条件, 返回True或False 表达式函数-资源函数 res_log_logstore_pull 拉取Logstore资源返回表格, 构建表格中, 使用查询字符串配置黑白名单, 来判断每行是保留还是丢弃. 全局事件函数-搜索表格映射 e_search_table_map 关键字是查询字符串, 值是匹配的值的字典进行映射 功能概览 功能 字段 全文 子串搜索 支持 支持 通配符*?搜索 支持 支持 完全匹配搜索 支持 - 正则表达式搜索 支持 - 数值范围搜索 支持 - 数值比较 支持 - 关系and,
- 下一篇
seleniumGrid分布式远程执行测试脚本
seleniumGrid分布式远程执行测试脚本执行UI自动化测试脚本时,不仅可以在本地执行,也可以远程指定某计算机执行测试脚本,seleniumGrid为我们提供了这类服务,但还需要自己搭建环境。 一、本地计算机需要准备java环境和selenium-server-standalone-4.0.0-alpha-2.jar包,jar包主要开启本机的hub节点(理解成控制机)。红色部分是开启本机(控制机)节点,蓝色部分是开启远程node节点时需要连接控制机地址 控制机地址 复制代码λ java -jar selenium-server-standalone-4.0.0-alpha-2.jar -role hub11:05:38.938 INFO [GridLauncherV3.parse] - Selenium server version: 4.0.0-alpha-2, revision: f148142cf811:05:39.233 INFO [GridLauncherV3.lambda$buildLaunchers$5] - Launching Selenium Grid hub o...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果