v8 使用的两篇文章

http://www.tuicool.com/articles/m2e2i2

http://www.ibm.com/developerworks/cn/opensource/os-cn-v8engine/

http://www.cppblog.com/woaidongmao/archive/2010/05/17/115577.html


脚本所需的类和方法已经装备完毕,接下来就可以做我们的速度测试了。

下面的测试速度是在我的电脑上,Core2 T7100, 1G内存上10次测试取平均的结果,编译环境为VC2005 Express,Release方式。单位为秒。

clip_image002

从图上可以直观地看出,V8的速度要比SpiderMonkey快,尤其是脚本一,V8的速度是SpiderMonkey的10倍还多。

总结

就执行速度而言,V8具有压倒性的优势,这和Google的官方宣传是一致的。

大 小方面,在VC的Release下,V8的动态编译库大小为1.39M;SpiderMonkey的动态编译库大小为708k,SpiderMonkey 胜出。静态编译?嗯,还是算了吧,偶编译的静态V8.lib足足有100M,和程序链接时要花费10秒钟的时间,调试程序太郁闷了~~。

对于编程简易程度来说,两方各有优势,这个因人而异,我觉得SpiderMonkey的概念更简洁一点;V8的Template、Scope、Handle等东东还是需要一点时间去理解的。而且还有一点,SpiderMonkey的官方文档比V8的丰富。

如 果各位细心的话,可以发现V8版的addMyClass没有“析构”函数,也就是说在脚本里建立出来的MyClass是存在内存泄漏的!我花了很长时间, 查了N多资料也没找到如何在V8的GC工作时回收InternalField里的数据(经试验,Persistent的MakeWeak方法无效)。目前 的解决方法只有为类提供一个destory函数,在脚本中显式调用来回收,不过这样就享受不了垃圾回收了。如果各位有更好的方法,请留言提出哦,非常感 谢!

最后我们还得提到IE的脚本引擎,调用IE脚本引擎的优点是操作系统集成,所以不用附带一个DLL或链接一大块脚本引擎,这样发布的软件会小一点点,而且ActiveX Scripting技术(请参考本站相关文章)对于熟悉COM编程的人来说编写代码也很简单。但是~~缺点也很明显,速度不是慢,而是相当慢~~本来偶还想用它也运行一下《脚本一》的代码作为参考的,结果等了一分种无响应后郁闷地强制退出~~


MDN上的SpiderMonkey文档确实有点过时了,MDN相当大一部分是社区爱好者自发贡献的,楼主发现什么问题也可以直接去改。
SpiderMonkey的api确实很不稳定,一直在改,而且官方也说目前不保证api的稳定,有相当大一部分api会从目前的c风格迁移到c++风格,包括定义属性,获取函数参数等等这些还会再改,但是他们已经有计划在将来逐渐稳定下来。
风险我觉得应该没什么。。SpiderMonkey还是有一定社区活跃度的,官方的开发计划也排了很远了,就现在对ES6的支持程度SpiderMonkey可能也远超V8。WP8确实没有官方支持,不过MS Open Tech已经帮我们搞定了,再等等应该不远了(也许就几天了)。

现在jsb里使用的是从Firefox 28源码里扒出来的版本,不是官方正式发布的版本,等v31一旦发布会升级上去。 


猜你喜欢

转载自blog.csdn.net/HeroRazor/article/details/52022995
v8