从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如下图右(太简陋了...)。

 

 

更多相关文章

  1. 通过Html网页调用本地安卓(android)app程序代码
  2. Android内存泄漏 ——检测、解决和避免
  3. Android系统内存管理的问题
  4. 【Android(安卓)Linux内存及性能优化】(九) 进程启动速度优化篇
  5. Android的内存管理
  6. Android应用程序内存泄漏介绍
  7. 关于Android内存泄漏的种种总结第二弹
  8. Android(安卓)操作系统的内存回收机制
  9. android怎么将已经安装在内存上的应用程序移动到SD卡上

随机推荐

  1. Android AIDL例子
  2. 漫谈android系统(9)-androidO的Android(
  3. Android设置头像,手机拍照或从本地相册选
  4. 动画效果编程基础--AnimationAndroid
  5. Android ListView去掉顶部阴影
  6. eclipse的android智能提示设置
  7. Android ListView常见属性问题
  8. 关于Android多项目依赖在Eclipse中无法关
  9. Android:Re-installation failed due to
  10. React Native与Android通信——Android c