V8和JavaScriptCore在Android Froyo上的速度比较

 

从Android 2.2开始,Google发布了他们的V8:一个用来替代JavaScriptCore的JavaScript引擎,号称其执行速度可匹敌编译后的可执行代码。

 

到底比WebKit自带的JavaScriptCore有多快呢?最近我们在Android的Froyo版本上分别使用两个引擎,运行SunSpider做对比测试,结果如下图所示。其中每一行的数据结果表示执行该项所需时间,单位为毫秒,数值越小性能越佳;最后一列表示V8运行速度是JavaScriptCore的多少倍,灰色数据表示下降,缺省为提升。

 

结论:

  1. 从数据来看确实有不小的改进,平均至少有3-4倍的提升。
  2. 但对于终端用户来说,是否网页浏览体验也如Google所说,有好几倍的提升呢?大部分情况下是“NO”,因为手机的网页浏览体验首先受限于网络带宽速度,再者JavaScript脚本在不同网页中的比重也各不相同,对于普通的新闻网页,JS的速度就是提升100倍用户也未必能够感知,但对于Gmail/Google Map甚至Web Game这类大量使用JavaScript的网页,则可能会带来较为显著的改善。
  3. 在“看不见”的地方,我们怀疑V8会使用更多的内存,因为在内存较低的手机上经常将测试完整执行。这点还需要进一步验证。

 

其它:

  1. 关于SunSpider:测试浏览器的JavaScript性能的常用工具之一,见 http://www2.webkit.org/perf/sunspider/sunspider.html
  2. 关于JavaScriptCore:最早源于KDE的KJS,随后演进为Apple的WebKit项目中的JavaScriptCore,经过Apple的数次改进,历经SquirrelFish,SquirrelFish Extreme等版本,现在Safari和大部分Android设备上使用的正是SFX,即后者。
  3. V8是Google早先用于自家浏览器Chrome上的,它是将脚转换为本机器码(machine code)来执行,而不是像JavaScriptCore那样的字节码(bytecode)。
  4. 关于测试手机的硬件:CPU是M家的624M,ARMV5TE,内存为512M。操作系统是Froyo/2.3。要在ARMV5TE上运行V8需要在编译阶段将VFP3指令除去,否则运行时刻会遇到SIGILL。
  5. V8项目的官方logo如下图左,在Froyo开源代码中使用的logo如下图右(太简陋了...)。

 

 

你可能感兴趣的:(Android)