Facebook 发布全新 JS 引擎!专注提高 React Native 应用的性能

论坛 期权论坛 期权     
H5前端开发社区   2019-7-15 09:31   3100   0

引言:点击上面【H5前端开发社区】蓝字关注,欢迎大家来交流学习。
Facebook 于7月12日发布了新的 JavaScript 引擎:Hermes,专注于提高 React Native 应用的性能,并且在市面上那些内存较少、存储速度较慢且计算能力低下的移动设备上都有良好的表现。


【备注】官网已经有Hermes的开发文档了,感兴趣的赶快去研究吧!

Hermes链接地址
GitHub:https://github.com/facebook/hermes
官网链接:https://hermesengine.dev/


Hermes是一款JavaScript引擎,经过优化,可以快速启动Android 上的React Native应用程序。它具有提前的静态优化和紧凑的字节码
7月12日,Facebook在俄勒冈州波特兰举行的Chain React会议上宣布,Facebook将继续推出开放式采购狂潮,推出旨在提高Android设备上大型应用程序性能的新JavaScript引擎。
移动应用程序越来越大,这可能会带来问题 – 特别是对于存储或处理能力有限的设备。这也是许多大型科技公司(包括Spotify,Uber和Facebook本身)推出其应用的“精简”版本的原因之一。但是,如果开发人员可以通过使用优化的JavaScript引擎来降低下载大小并提高启动性能,那么该怎样呢?
这就是Facebook首先推出自己的应用程序套件,为此它开发了Hermes JavaScript引擎,现在可以在GitHub上供任何开发人员使用。
“为了提高Facebook应用程序的性能,我们的团队不断改进我们的JavaScript代码和平台,”该公司在一篇博文中写道。“在分析性能数据时,我们注意到JavaScript引擎本身是启动性能和下载大小的重要因素。有了这些数据,我们就知道,与台式机或笔记本电脑相比,我们必须在手机更受限制的环境中优化JavaScript性能。“
根据Facebook,Hermes帮助改进三个核心应用程序属性:交互时间(TTI),这是从启动应用程序到完全加载和使用它所需的时间;下载大小(Android .APK大小);和内存利用率。
在这里,您可以看到使用在Google Pixel手机上运行的Mattermost(开源Slack替代品)所做的一些改进,TTI下降超过2秒,文件大小下降19 MB,内存利用率下降49 MB。
值得注意的是,Hermes仅适用于使用React Native构建的应用程序,这是一个由Facebook开发并在2015年开源的移动应用程序框架.React Native的核心卖点是代码可以在不同平台上本地运行(即Android和iOS),该框架已被一些大品牌应用程序使用,包括Uber Eats和Walmart。
然而,React Native并不总是受到热烈欢迎,因为它的一些缺点 – 应用程序中的特定功能仍然需要本机代码,例如,支持与智能手机相机和传感器的集成。开发人员通常必须创建“桥梁”来填补本机代码和React Native之间的空白。这是Airbnb曾经是React Native的倡导者,去年从框架中脱离出来的原因之一。
但开源Hermes可能是Facebook为React Native注入新生命的一种方式,并鼓励开发人员进一步采用。
考虑到Hermes专注于移动应用程序,Facebook表示它没有任何将Hermes与Web浏览器或服务器基础架构(如Node.js)集成的计划。“现有的JavaScript引擎在这些环境中仍然更受欢迎,”该公司表示。
Hermes是Facebook发布的一系列开源项目中的最新项目,最近的其他项目包括一个名为Pythia的深度学习框架;深度学习推荐模型,称为DLRM;和Spectrum,旨在提高照片上传效率。


移动应用变得愈加繁重的同时也愈加复杂了。开发者为应用添加新功能时通常会遇到卡顿等性能问题。虽然出现性能问题的原因是多种多样的,但用户不关心这些,他们只希望自己在任何设备上使用应用时都能有流畅的体验。
为了提高 Facebook 应用的性能,我们的团队不断改进自己的 JavaScript 代码和平台。在分析性能数据时,我们发现 JavaScript 引擎本身是影响启动性能和应用包体积的重要因素。有了这些数据,我们意识到必须在比 PC 端限制更多的移动环境中优化 JavaScript 性能。尝试了各种方案后,我们构建了一个新的 JavaScript 引擎:Hermes。它旨在提高应用性能,专注于 React Native 应用,并且在市面上那些内存较少、存储速度较慢且计算能力低下的移动设备上都有良好的表现。
在 Chain React 2019 大会上,我们发布了 Hermes JavaScript 引擎。我们已经开源了 Hermes 引擎及用于 React Native 的 Hermes 集成。我们很高兴能与开源社区合作,让开发者立即开始使用 Hermes。
[h1]Hermes 如何提升 React Native 性能[/h1]对于基于 JavaScript 的移动应用而言,用户体验主要取决于下面这些指标:
  • 应用程序可用的时间,称为交互时间(TTI)
  • 需要下载的数据大小(在 Android 上就是 APK 大小)
  • 内存利用率


在 Google Pixel 上运行 React Native 应用的 MatterMost 性能指标,可反映印度等市场中流行智能手机的表现。
值得注意的是,这几大指标与引擎执行 JavaScript 代码时的 CPU 使用率关系并不大。关注这些指标意味着我们需要发展出与当今大多数 JavaScript 引擎不一样的策略和取舍。因此我们的团队需要从零开始设计和构建 Hermes。专注于这些指标后,我们的实现为 React Native 应用程序带来了实质性的改进。
由于 Hermes 是针对移动应用优化的,因此我们没有计划将其集成到任何浏览器或 Node.js 等服务端基础架构中。在这些环境中现有的 JavaScript 引擎仍然是首选。
英文原文: https://code.fb.com/android/hermes/
翻译者:王强
转载于https://www.infoq.cn/article/8JEVNZvTrj_e1oJwo5vL

喜欢的话,就转发给身边的程序员朋友吧!






程序员朋友们,请答应我?别再去东南亚写代码了好么?
程序员抱怨:公司要求签署“奋斗者协议”,无偿加班,准备跑路
一流程序员靠数学,二流程序员靠算法,网友:我是七流靠复制
2019年值得推荐的11款JavaScript动画库
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:15
帖子:3
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP