BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Rhino速度将得到提升

| 作者 Rick Hightower 关注 0 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2011年7月12日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

近日,JRuby专家Charles Oliver Nutter开始参与Rhino项目(JavaScript的Java实现)以提升Rhino JavaScript运行时的速度,进而实现与V8的竞争。虽然Rhino拥有可靠的实现,但在性能上却无法与其他的JavaScript运行时相提并论。Nutter认为Rhino可以通过Invokedynamic与其他优化手段扭转颓势。这可以使Rhino达到与V8相同的水准,至少也能与V8展开竞争。

InfoQ有幸采访到了Nutter以了解他与Rhino团队现在正在从事的工作。Nutter打算使用JVM的Invokedynamic将Rhino的派发机制直接连接到JVM的优化编译器上。总的来说,这么做可以降低或消除调用期方法查找、参数装箱的代价,并且可以通过内联与优化实现JavaScript对JavaScript以及JavaScript对Java的调用。Nutter说到使用invokedynamic的另一个好处在于如果使用了Java 6,那么Rhino的调用逻辑会变得更简单。

InfoQ又向Nutter问到,随着JavaScript变得越来越重要,让JVM拥有更快的JavaScript实现是不是变得很重要了。Nutter回答到:

我个人认为对JavaScript的大肆宣传有些过分了。对于浏览器来说它是一门优秀的语言,但主要原因是所有浏览器都支持它,而并不是说这门语言要比其他语言更好。

在服务器端,它变得流行的原因在于现在的运行时很不错,现有的面向客户端的众多库也适用于服务器端。

然而,考虑到最近JavaScript在端到端应用的日渐流行,那么再来一个JVM版也是自然而然的事情了。但尴尬的是最快的托管运行时——JVM——运行JavaScript的速度却无法与当前的竞争者相抗衡。我觉得是时候改变了。

最后,我们问Nutter从实现的角度来看,Rhino与JRuby相比如何。Nutter回答到:

Rhino在很多方面都是更简单的一个目标,因为它并不具备Ruby的一些特性。然而,它代表了一种有趣的挑战,因为其基于原型的对象模型无法存储方法表缓存,而Ruby则可以做到。V8所用的技术与John Rose的“DavinciMonkey”(基于invokedynamic的Rhino的一个早期尝试)——如将生成的合成类作为原型已经进行了修改——它可以更容易地处理Rhino不固定的类型结构。

Chrome所用的V8 JavaScrip引擎与Rhino之间存在巨大的性能上的鸿沟。Nutter说诸如invokedynamic等JVM特性可以填平这个鸿沟,但Rhino需要不断改进自身的性能才行。虽然Rhino是个不错的实现,但我们还可以使用其他一些技术来提升速度,可以使用新的JVM特性如invokedynamic,也可以不使用。

现在说Rhino到底能不能与那些专门针对JavaScript的VM抗衡还为时过早,但毫无疑问,Rhino的速度将会得到极大的提升。

查看英文原文:Rhino is About to Get a Lot Faster

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

期待啊 by 呼 唤

期待早日解决rhino的性能问题,这样birt的性能势必会有大的提升。

Re: 期待啊 by Zhu Zhu

估计不行哦。我的网站用Node.js,一直很快。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT