写点什么

Rhino 速度将得到提升

  • 2011-07-11
  • 本文字数:1090 字

    阅读完需:约 4 分钟

近日,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

2011-07-11 13:091959
用户头像

发布了 88 篇内容, 共 264.9 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

阿里巴巴云原生混部系统 Koordinator 正式开源

阿里巴巴云原生

元宇宙背景下——内容生产传播商业价值分析2022

易观分析

元宇宙 内容生产传播

PlatoFarm生态NFT总量恒定,激励机制让Dao成员持续贡献

西柚子

腾讯WeTest通过TMMi 3级认证

WeTest

自助洗车机洗车多少钱一次?利润有多少

共享电单车厂家

自助洗车加盟 自助洗车机洗车 自助洗车多少钱一次

EventBridge 与 FC 一站式深度集成解析

阿里巴巴云原生

Java运算符、输入、选择流程控制详细讲解

五分钟学大数据

Java 4月月更

线上活动| 阿里云、亚马逊云与MongoDB的大佬带你来涨知识!

MongoDB中文社区

mongodb

java高级用法之:JNA中的Memory和Pointer

程序那些事

Java Netty 程序那些事 4月月更

如何使用 Serverless Devs 部署静态网站到函数计算

阿里巴巴云原生

花14天梳理了3月份各大厂问得最多的50道Java基础面试题

北游学Java

Java 面试

如何通过 Node 上传小程序代码,不会就看看吧

CRMEB

ironSource Luna 正式推出针对苹果搜索广告的自动化投放工具

Geek_2d6073

K8s 基于 EFK 的日志解决方案介绍

移动云大数据

elasticsearch Kibana Fluentd

关于 RocketMQ Summit 的延期通知

阿里巴巴云原生

怎么加盟6元自助洗车?一起来了解下

共享电单车厂家

自助洗车怎么加盟 6元自助洗车 加盟自助洗车 6元自助洗车项目

技术干货| 如何在MongoDB中轻松使用GridFS?

MongoDB中文社区

mongodb

模块三作业

HZ

架构实战营 #架构实战营

中兴通讯加入星策开源社区 携手推动企业智能化转型建设

星策开源社区

人工智能 机器学习 开源社区 企业转型

基于数据技术全域流量协同优化是银行零售业务关键突破点

易观分析

银行 数据技术

TASKCTL的单机与分布式部署,如何启动服务和代理节点监听

敏捷调度TASKCTL

批量任务 调度引擎 ETL 自动化运维 调度任务

PlatoFarm生态NFT总量恒定,激励机制让Dao成员持续贡献

小哈区块

开个自助洗车要多少钱?主要费用有哪些?

共享电单车厂家

自助洗车加盟 开个自助洗车

加盟自助洗车需要人工全天看守吗

共享电单车厂家

24小时无人自助洗车 加盟自助洗车

生产到一半改工艺生产为另一个产品的业务方案探讨

秋去冬来春未远

生产改单 生产执行 生产拆单

漏洞挖掘之Spring Cloud注入漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

快速了解日志概貌,详细解读13种日志模式解析算法

云智慧AIOps社区

算法 运维 安全 监控 日志

走进直播间——智能自动化助力政企数字化转型

云计算

直播预告 | PolarDB-X 动手实践系列——用 PolarDB-X 搭建一个高可用系统

阿里云数据库开源

MySQL 数据库 阿里云 开源 PolarDB-X

iOS编码规范

刁架构

规范 iOS编码规范

无人洗车店生意怎么样?想加盟自助洗车

共享电单车厂家

加盟自助洗车 无人自助洗车加盟 无人洗车店生意

Rhino速度将得到提升_Java_Rick Hightower_InfoQ精选文章