APP下载
报价宝  ›  综合  › 

脸书开源为行动应用程序最佳化的JavaScript引擎Hermes

报价宝 来源:baojiabao.com 发布时间:2019-07-19 00:46:00 10月08日更新
报价宝综合消息脸书开源为行动应用程序最佳化的JavaScript引擎Hermes

脸书释出了为行动装置最佳化的JavaScript引擎Hermes,能提高应用程序的效能,以及为资源有限的装置提供更顺畅的使用体验,目前Hermes的第一个使用案例,是用于改进React Native应用程序,脸书未来还计划推出一系列分析工具,并在开发工具Visual Studio Code上提供整合支援。

现在的行动应用程序越来越复杂,容量也越来越庞大,开发人员在为应用程序增加功能时,常需要斟酌效能影响,而脸书为了提高自家应用程序的效能,对JavaScript程式以及平台做了很多改进,但当他们在分析效能资料的时候,发现JavaScript引擎本身的启动效能以及容量,便是影响应用程序执行效能的一大重要因素。

脸书提到,行动装置相对桌电以及笔电来说,运算资源更少,才需要专为这类资源受限的装置最佳化JavaScript效能,因此脸书重新打造了名为Hermes的JavaScript引擎。Hermes针对较低阶运算资源不足的装置进行最佳化,这些装置通常拥有较少内存,较慢的闪存,以及较弱的计算能力,脸书希望透过Hermes,以改善应用程序载入到可用的时间(TTI,Time To Interact)、下载程式的大小,还有内存的使用率。

Hermes透过3个手段以提高上述的3项指标,分别是字节码预编译(Bytecode Precompilation)、不使用JIT,以及特殊的垃圾回收策略。脸书提到,通常JavaScript引擎会载入JavaScript程式码,并产生字节码,而这个步骤会延迟JavaScript程式开始执行的时间,但Hermes使用AOT编译器跳过这一个过程,让程式在发布的时候就先编译好,因此也可以花更多的时间最佳化字节码,而字节码更小效率也就更高。

字节码预编译可以明显缩减,程式码载入到可以开始执行与操作的时间,而且因为程式码先编译好了,文件映射的内存只需要读取,对于像Android无置换(Swapping)操作的操作系统,在内存吃紧的情况下,该内存区块顶多被移除,不至于整个程序被砍掉。脸书提到,虽然压缩字节码比压缩JavaScript程式码稍大,但是Hermes本身的容量比较小,因此也减少了Android React Native应用程序整体的容量。

Hermes采用无JIT设计,脸书表示,虽然JIT编译器是常用来加速执行的方法,但是JIT必须要在应用程序启动时预热,而这会使得TTI难以改善,甚至负面影响TTI,而且JIT会增加原生程式码的大小和内存使用,这些缺点都会使脸书设定的三个指标下降。

在垃圾回收策略上,Hermes能够最小化引擎使用的内存和虚拟地址(Virtual Address,VA)空间,Hermes的垃圾回收器具有几个重要的特性,分别是以区块的形式按需分配VA空间,而VA空间也不需要在单一内存范围内,这能避免32位元装置的限制,垃圾回收器也能够移动物件,对内存碎片进行整理,并把不需要的内存区块还给系统,并且以代数机制回收内存,而不做JavaScript堆(Heap)的扫描。

控制内存的使用,对于内存有限的装置非常重要,脸书提到,低阶装置由于内存有限,在不会进行置换操作的操作系统,系统会关闭使用过多内存的应用程序,这样不只会影响程式后台功能,之后也需要花费许多时间重新启动,而Hermes能尽可能避免这些影响应用程序效能的事件发生。

React Native是脸书应用Hermes最初的使用案例,并且已经完成大部分的工作,接下来还会建置时间和内存分析工具,让开发者更容易改进应用程序,未来也希望能支援Visual Studio Code除错器协定。而由于Hermes是针对行动应用程序进行最佳化,因此脸书没有计划要将Hermes与浏览器或是Node.js等服务器基础架构整合,脸书表示,目前市面上的JavaScript引擎仍然是这些环境的首选。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 手机价格 笔记本价格 小米手机价格 华为手机价格 红米手机价格