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

15-01-17 banq
                   

这是来自stackoverflow的一个提问,Ruby Python有什么特点阻止了像Javascript V8引擎那样的优化设计?Python也有Google协同开发,他们不应该存在偏见,或者这是Google的资源限制?

What blocks Ruby, Python to get Javascript V8 spee

挑选一个点赞最多的翻译一下:

没有什么能阻止,除了钱,V8拥有一支出色的,高度专业化,经验丰富的(因此高薪)工作的工程师,有几十年创建动态的面向对象语言的经验,包括在高性能的执行引擎。他们基本上就是创造了SUN HotSpot JVM的同一批人。

Lars Bak是开发人员的领头,已经在VM上工作了25年(所有这些导致了V8),这基本上包括了他的整个生活(专业)。而目前有些写Ruby VM的人甚至还不到25岁。

那么有任何的Ruby / Python的功能是阻止实施类似V8引擎的优化(例如内联缓存)?鉴于IronRuby,JRuby MagLev MacRuby和Rubinius等也有单态(IronRuby是单态)或多态内联缓存,答案显然是否定的。现代的Ruby实现已经做了大量的优化。例如,对于某些操作,Rubinius的哈希类比YARV的要快,这听起来不太刺激直到你意识到Rubinius的哈希类是100%纯Ruby来实现的,YARV的是100%手工优化的C编写实现的.

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

主要问题是资源限制,不只是Google,V8的源代码到现在已经25岁了。那些创造了它的人也创造了Self VM (这是最快的一个动态的面向对象语言执行引擎), Animorphic Smalltalk VM(这是最快的一个Smalltalk执行引擎),HotSpot JVM(所创造最快Java虚拟机,最快的虚拟机的时间)和OOVM(最高效的Smalltalk VM之一)。

                   

6