Google今日披露了其在Chrome beta 33中作出的一项调整,以进一步提升“并行编译”性能。为此,它还卸下了很大一部分的后台线程。此前,Chrome是在主线程中编译JavaScript的,但这样会影响JavaScript应用程序的性能。而最终,Google在保持应用程序响应的同时,还提升了JavaScript的性能。当然,这一切都是通过V8(Chrome的JavaScript引擎)搞定的。 下面概述下它是如何工作的: 首先,V8会推迟编译JavaScript函数,直到它被首次执行前再立即开动(为了减少编译所耗费的总体时间); 然后,代码片段会通过专门的优化编译器“编译一次”(conpiled a second time); 尽管第二步会增加时间,但得益于更先进的技术优化,代码的速度依然更快了。 上图:是未启用并行编译的Chrome(V8完全忙于优化一大块代码片段,结果留下了一段执行“真空”)。 上图:启用了并行编译后的Chrome(V8依然忙于优化大块代码片段,但通过后台线程执行)。 以上为Nexus 5上的Mandreel得分——Google的Octane 2.0基准测试工具集——呈现了V8的具体表现(提升27%)。黑条代表JavaScript执行,而Google的目标是“越实越好”。 当前的浏览器会轮流编译优化的JavaScript代码并执行,但是很容易造成“口吃”(消化不良/执行真空)的囧况。而启用了后台并行编译的V8引擎,有望攻克编译大块代码片时的性能浪费,并为复杂的应用程序(如游戏)带来更加流畅且“不掉帧”的体验。 预计这种改进将于未来数月内抵达Chrome浏览器的稳定版本。 |