免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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:091922
用户头像

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

关注

评论

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

在Dubbo中,模板方法模式 用得真6

小小怪下士

Java 程序员 dubbo 阿里

DevUI开源经验分享:从0到1开始运营你的开源项目

华为云开发者联盟

开源 华为云 企业号十月 PK 榜

我把分布式音乐播放器适配了Stage模型

OpenHarmony开发者

OpenHarmony

docker-compose下的java应用启动顺序两部曲之一:问题分析

程序员欣宸

Java Docker Docker-compose 11月月更

什么是 HTML 语义化,有什么好处

肥晨

11月月更 HTML语义化 语义化标签

万字详解JVM,让你一文吃透

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

react hook 源码完全解读

flyzz177

React

2022年中国汽车OTA行业发展洞察

易观分析

汽车 OTA

如何准备好一场vue面试

bb_xiaxia1998

Vue

SAP 电商云的 Spartacus Storefront 如何配置多个 JavaScript Application

汪子熙

angular SAP commerce 电商云 11月月更

谈谈企业级前端应用中客户端渲染和服务器端渲染的区别

汪子熙

前端开发 SSR SAP Spartacus 11月月更

HDC 2022精彩继续,多重亮点进来看!

HarmonyOS开发者

HarmonyOS

软件测试面试真题 |你用过哪些用例设计方法?

测试人

软件测试 面试题 测试用例

AI 模型编译器 MegCC 开源,解决推理引擎体积问题

MegEngineBot

深度学习 开源 MegEngine MegCC AI 模型编译器

云原生系列四:Yelp 如何在 Kubernetes 上运行 Kafka

叶秋学长

kafka Kubernetes 11月月更 Yelp

高效数据通道支撑生产情况实时分析与可视化|工业4.0智慧工厂

EMQ映云科技

物联网 IoT 数据可视化 11月月更 云边协同

React源码分析6-hooks源码

goClient1992

React

认证升级 | 秒云再次获评软件企业认证

MIAOYUN

双软认证 软件企业认证 软件产品认证

谈谈vue面试那些题

bb_xiaxia1998

Vue

面试官最喜欢问的几个react相关问题

beifeng1996

React

业界首个!快手提出亿级别多模态短视频百科体系——快知Kuaipedia

Geek老T

短视频 快手 泛知识

EMQ荣获“2022中国移动创客马拉松OneOS物联网专题赛”三等奖

EMQ映云科技

物联网 IoT emqx 云边协同 车路协同

vue这些原理你都知道吗?(面试版)

bb_xiaxia1998

Vue

梁胜博士:软件供应链安全两手抓,既要安全左移也要全链路防护丨活动回顾

SEAL安全

DevOps DevSecOps 软件供应链 安全左移 软件供应链安全

京东云开发者|深入JDK中的Optional

京东科技开发者

jdk java8 NPE 空指针 Optional

代码质量与安全 | 想在发布竞赛中胜出?Sonar来帮你

龙智—DevSecOps解决方案

代码质量 代码安全

vue面试之Composition-API响应式包装对象原理

bb_xiaxia1998

Vue

React源码分析7-state计算流程和优先级

goClient1992

React

python中私有成员和公有成员

乔乔

11月月更

专业移动办公解决方案!远程控制软件RayLink内测火热进行中!

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

vue2项目搭建-使用VUE CLI3.0搭建项目vue2+scss+element简易版

肥晨

脚手架 11月月更 vue2项目搭建

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