是否有任何Ruby/Python特性阻碍了V8引擎优化(例如inline caching)的实现?

Python是由谷歌的人共同开发的,所以它不应该被软件专利阻止.

或者这是谷歌投入V8项目的资源问题.

推荐答案

是什么阻止了Ruby和Python获得Javascript V8速度?

没有什么

好吧,好吧:钱.(还有时间、人力、资源,但如果你有钱,你可以买到这些.)

V8 has a team of brilliant, highly-specialized, highly-experienced (and thus highly-paid) engineers working on it, that have decades of experience (I'm talking individually – collectively it's more like centuries) in creating high-performance execution engines for dynamic OO languages. They are basically the same people who also created the Sun HotSpot JVM (among many others).

首席开发人员Lars Bak已经在VM上工作了25年(所有这些VM一直到V8),这基本上就是他的整个(职业)生活.有些编写Ruby VM的人甚至不到25岁.

是否有任何Ruby/Python特性阻碍了V8引擎的优化实现(例如内联缓存)?

考虑到至少IronRuby、JRuby、MagLev、MacRuby和Rubinius拥有单态(IronRuby)或多态内联缓存,答案显然是否定的.

现代Ruby实现已经进行了大量优化.例如,对于某些操作,Rubinius的Hash类比YARV的快.现在,这听起来并不令人兴奋,直到你意识到Rubinius的Hash类是用Hash%纯Ruby实现的,而YARV的是用Hash%手工优化的C实现的.

所以,至少在某些情况下,Rubinius可以生成比GCC更好的代码!

或者,这更多的是Google在V8项目中投入的资源问题.

对不仅仅是谷歌.V8的源代码已经有25年的历史了.在V8上工作的人还创建了Self VM(迄今为止是有史以来最快的动态OO语言执行引擎之一)、Animorphic Smalltalk VM(迄今为止是有史以来最快的Smalltalk执行引擎之一),热点JVM(有史以来创建的最快的JVM,可能是最快的VM周期)和OOVM(有史以来创建的最高效的Smalltalk VM之一).

事实上,V8的首席开发人员拉尔斯·贝克(Lars Bak)已经完成了其中every single one个项目,以及其他一些项目.

Javascript相关问答推荐

没有输出到带有chrome.Devtools扩展的控制台

我可以使用CSS有效地实现最大宽度=100%和最大高度=100%,而无需父母有明确的/固定的宽度和高度,替代方法吗?

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

google docs boldText直到按行执行应用脚本错误

在286之后恢复轮询

使用Promise.All并发解决时,每个promise 的线性时间增加?

如何在使用rhandsontable生成表时扩展数字输入验证?

Eval vs函数()返回语义

有条件重定向到移动子域

Rxjs流中生成IMMER不能在对象上操作

Phaser3 preFX addGlow不支持zoom

当我点击一个按钮后按回车键时,如何阻止它再次被点击

react -原生向量-图标笔划宽度

Node.js错误: node 不可单击或不是元素

我不知道如何纠正这一点.

无法使用npm install安装react-dom、react和next

FindByIdAndUpdate在嵌套对象中创建_id

脚本语法错误只是一个字符串,而不是一个对象?

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?

如何判断字符串是否只包含特定字符串