Data+AI时代,如何打造下一代数智平台? 了解详情
写点什么

Facebook 开源 JavaScript 引擎 Hermes:显著降低启动时间和内存使用

  • 2019-09-01
  • 本文字数:1136 字

    阅读完需:约 4 分钟

Facebook 开源 JavaScript引擎Hermes:显著降低启动时间和内存使用

近日,Facebook开源了 JavaScript 引擎 Hermes,该引擎旨在提高React Native App在Android设备上的性能,尤其是启动性能、安装文件大小和内存消耗。微软 Office 和Mattermost(Slack 的一个开源替代品)的初步基准测试都证实了这一点。


Hermes 源于 Facebook 内部一个提高自身移动应用性能的项目。工程师们注意到其中一个关键因素是 JavaScript 引擎本身,所以他们决定针对移动应用受限的环境对引擎进行优化


在探索了其他选项后,我们构建了一个全新的 JavaScript 引擎 Hermes。它旨在提高应用程序的性能,专注于提高 React Native App 性能,尤其是那些部署在内存有限、存储缓慢、计算能力下降的大众市场设备上的应用。


如上所述,Hermes 关注于三个指标:应用程序从启动到可用所需的时间(首次交互时间,缩称 TTI)、应用安装文件大小(APK 大小)和内存利用率。Facebook 介绍了他们为改进这些指标所做的三个主要架构决定:预编译 JavaScript 源代码,抛弃 JIT 编译器以及改进垃圾收集策略以适应移动操作系统的限制。


将 JavaScript 预编译成字节码对性能有两个关键的好处。一方面,前向解析和直接编译减少了启动时间。另一方面,由于预编译阶段对时间限制要求更小,通常生成的字节码也更小、更有效,编译器可以对程序整体进行优化,如函数重复数据删除和字符串表打包等。在字节码格式的前端,Hermes 字节码可以映射到内存中,而不需要提前读取整个文件,这对于使用缓慢闪存的情况尤其有效,并减少了应用由于过度使用内存而被操作系统杀死的情形。



此外,Facebook 还维护了一个对 CPU 密集型工作负载进行了优化的 JIT 编译器,而这些工作负载并不是典型的移动应用程序。但是,同之前的优化相比(缩短 TTL 时间,减小本机代码大小和内存消耗),不使用该 JIT 编译器也不会产生很大的影响, 作为移动应用程序的最终性能优化,Hermes 使用了垃圾内存收集策略,旨在最小化应用程序由于内存使用而被移动操作系统杀死的几率。Hermes 垃圾收集器试图减少总体虚拟内存的消耗,为此实现了非连续块内存的按需分配,在不再需要时,这些内存可被移动和返回给操作系统。


如上所述,Facebook 和微软的初始基准测试在所有三个指标上都显示出了显著的增长。特别是,Slack 的替代品 Mattermost 将其 TTL 时间以及其应用程序大小减半,整体内存利用率下降了 25%。微软Office在所有指标上也提高了20-25%的性能



Facebook 并没有将其新的 JavaScript 引擎定位为 V8 的替代品,他们仍然认为 V8 最适合 Node 和基于浏览器的应用程序。值得注意的是,iOS 应用程序只能使用 iOS 开发包中包含的 JavaScript 引擎,因此它们无法从 Hermes 的优化中获益。


原文链接:


Facebook Hermes May Significantly Reduce Boot-time and Memory Usage in Android React Native Apps


2019-09-01 08:006600
用户头像

发布了 36 篇内容, 共 19.9 次阅读, 收获喜欢 55 次。

关注

评论 2 条评论

发布
用户头像
React Native 是一个框架名,不应该译为 "React 原生"
2019-09-02 09:50
回复
感谢反馈,已经修改。
2019-09-02 10:03
回复
没有更多了
发现更多内容

2024IT市场权威榜单发布!腾讯云TBDS斩获两大奖项!

腾讯云大数据

TBDS

加速一键智能上云,云耀X实例显真功夫

平平无奇爱好科技

华为云新一代柔性算力服务器,加速企业轻松上云数智化转型

平平无奇爱好科技

华为云这款产品性能超越独享实例,企业数字化升级首选!

平平无奇爱好科技

加速企业上云数智化创新,云耀X实例有妙招

平平无奇爱好科技

柔性算力随心配,企业一键上云更智能

平平无奇爱好科技

京东商家智能助手:Multi-Agents 在电商垂域的探索与创新

京东零售技术

人工智能 agent LLM 企业号 5 月 PK 榜

Koupleless 单进程多应用如何解决兼容问题

SOFAStack

开源 应用架构 蚂蚁集团 兼容

🐬记一次MySQL执行修改语句超时问题

不在线第一只蜗牛

MySQL 数据库

未来云计算标杆:华为云耀云服务器X实例打造智能安全的数字化解决方案

轶天下事

加速企业云上降本增效,提升性能首选云耀X实例

轶天下事

参与征文赢面试绿通!InfoQ作者享特别福利!

阿里技术

博思白板可以画思维导图吗?boardmix常见问题解答!

彭宏豪95

效率工具 在线白板 办公软件 在线协同 在线协作

欧特克工程建设峰会在京召开

E科讯

6倍性能一直加速一直快,云耀X实例值得中小企业拥有

轶天下事

什么是网络钓鱼攻击

德迅云安全杨德俊

OPPO举办OTalk 开发者交流专场,提供Android 15多元化适配服务

科技热闻

MySQL进阶必须掌握的知识点有这些,我没说错吧。

王中阳Go

golang 数据库 算法 面试题 大厂面经

MeetUp 议题征集!龙蜥邀您共同探索智能可观测运维技术

OpenAnolis小助手

操作系统 系统运维 Meetup 龙蜥社区

加速中小企业上云更便捷,新一代柔性算力新物种云耀X实例有妙招

轶天下事

如何让企业上云更省心?云耀X实例一键柔性算力随心配!

轶天下事

Koupleless 内核系列|模块化隔离与共享带来的收益与挑战

SOFAStack

开源 模块 架构治理 蚂蚁集团 单体应用架构

云手机和模拟器的区别:云手机优势大更防封

Ogcloud

本地手机模拟器 云手机 海外云手机 云手机群控

一文了解龙蜥社区&芯片厂商研发合作模式

OpenAnolis小助手

操作系统 龙蜥社区 合作模式

加速企业上云新体验,云耀X实例助力数字化转型开启新风向

平平无奇爱好科技

Facebook 开源 JavaScript引擎Hermes:显著降低启动时间和内存使用_大前端_Sergio De Simone_InfoQ精选文章