是否有任何 Ruby / Python 功能阻碍V8 引擎的优化(例如内联缓存)实现?
Python 是由谷歌人共同开发的,所以它不应该被软件专利所阻止。
或者这与谷歌在 V8 项目中投入的资源有关。
是什么阻碍了 Ruby、Python 来获得 Javascript V8 速度?
没有。
好吧,好吧:钱。(还有时间、人员、资源,但如果你有钱,你可以买这些。)
V8 拥有一支才华横溢、高度专业化、经验丰富(因此薪水高)的工程师团队,他们在创造高-动态面向对象语言的性能执行引擎。他们基本上是创建 Sun HotSpot JVM(以及许多其他人)的同一个人。
首席开发人员 Lars Bak 已经在虚拟机上工作了 25 年(所有这些虚拟机都升级到了 V8),这基本上就是他的全部(专业)生活。一些编写 Ruby VM 的人甚至还不到 25 岁。
是否有任何 Ruby / Python 特性阻碍 V8 引擎的优化(例如内联缓存)实现?
鉴于至少 IronRuby、JRuby、MagLev、MacRuby 和 Rubinius 具有单态 (IronRuby) 或多态内联缓存,答案显然是否定的。
现代 Ruby 实现已经做了很多优化。例如,对于某些操作,Rubinius 的Hash类比 YARV 的快。现在,这听起来并不令人兴奋,直到您意识到 Rubinius 的Hash类是用 100% 纯 Ruby 实现的,而 YARV 的类是用 100% 手工优化的 C 实现的。
Hash
所以,至少在某些情况下,Rubinius 可以生成比 GCC 更好的代码!
是的。不仅仅是谷歌。V8 源代码的沿袭至今已有 25 年历史。从事 V8 工作的人们还创建了 Self VM(迄今为止,它是有史以来最快的动态 OO 语言执行引擎之一)、Animorphic Smalltalk VM(迄今为止,是有史以来最快的 Smalltalk 执行引擎之一)、HotSpot JVM(有史以来最快的 JVM,可能是最快的 VM 周期)和 OOVM(有史以来最高效的 Smalltalk VM 之一)。
事实上,V8 的首席开发人员 Lars Bak 致力于其中的 每一个 ,以及其他一些。