是什么阻碍了Ruby,Python获得Javascript V8的速度?[已关闭]

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

Python是由Google共同开发的,所以它不应该被软件专利所阻止。

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


答案 1

是什么阻碍了Ruby,Python获得Javascript V8的速度?

无。

好吧,好吧:钱。(还有时间,人,资源,但如果你有钱,你可以买这些。

V8拥有一支才华横溢,高度专业化,经验丰富(因此高薪)工程师的团队,他们在为动态OO语言创建高性能执行引擎方面拥有数十年的经验(我是单独说的 - 总的来说,它更像是几个世纪)。他们基本上是创建Sun HotSpot JVM(以及许多其他人)的同一个人。

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

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

鉴于至少IronRuby,JRuby,MagLev,MacRuby和Rubinius具有单态(IronRuby)或多态内联缓存,答案显然是否定的。

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

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

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

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

事实上,V8的首席开发人员Lars Bak参与了其中的每一个,以及其他一些。


答案 2

高度优化JavaScript解释器的动力更大,这就是为什么我们看到Mozilla,Google和Microsoft之间投入了如此多的资源。JavaScript必须在一个(通常是不耐烦的)人在等待它的时候实时下载、解析、编译和运行,它必须在一个人与它交互的时候运行,而且它是在不受控制的客户端环境中这样做的,这个环境可能是一台电脑、一部手机或一个烤面包机。它必须是有效的,才能在这些条件下有效地运行。

Python和Ruby在由开发人员/部署者控制的环境中运行。一个强大的服务器或桌面系统,通常限制因素是内存或磁盘I / O之类的东西,而不是执行时间。或者可以利用缓存等非引擎优化。对于这些语言,专注于语言和库功能集而不是速度优化可能更有意义。

这样做的附带好处是,我们有两个很棒的高性能开源JavaScript引擎,它们可以并且正在被重新用于各种应用程序,如Node.js。