什么阻止Ruby,Python获得Javascript V8的速度?

有没有阻止V8引擎优化的实现(例如内联缓存)的Ruby / Python功能?

Python由Google合作开发,所以不应该被软件专利所阻挡。

或者这相当于Google投入V8项目的资源问题。


什么阻止Ruby,Python获得Javascript V8的速度?

没有。

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

V8拥有一支精干,高度专业化,经验丰富(因而薪水高)的工程师队伍,拥有数十年的经验(我个人正在谈论 - 几乎是几个世纪以来)创造高性能执行动态OO语言的引擎。 他们基本上是同样创建Sun HotSpot JVM的人(等等)。

领先的开发人员Lars Bak已经从事虚拟机工作了25年(所有这些虚拟机都已经领导到V8),这基本上是他整个(专业)的生活。 一些编写Ruby虚拟机的人甚至不到25岁。

有没有阻止V8引擎优化的实现(例如内联缓存)的Ruby / Python功能?

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

现代Ruby实现已经做了大量的优化。 例如,对于某些操作,Rubinius的Hash类比YARV快。 现在,直到您意识到Rubinius的Hash类在100%纯Ruby中实现,而YARV在100%手动优化的C中实现之前,这听起来并不令人兴奋。

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

或者这相当于Google投入V8项目的资源问题。

是。 不只是Google。 V8的源代码现在已经有25年的历史了。 从事V8工作的人员还创建了Self VM(迄今为止创建的最快的动态OO语言执行引擎之一),Anomorphic Smalltalk VM(迄今为止创建的最快的Smalltalk执行引擎之一),HotSpot JVM(有史以来创建的最快的JVM,可能是最快的VM周期)和OOVM(有史以来创建的最高效的Smalltalk VM之一)。

事实上,V8的首席开发人员Lars Bak曾为其中的每一个人员以及其他一些人员工作过。


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

Python和Ruby运行在由开发人员/部署人员控制的环境中。 一个健壮的服务器或桌面系统,通常情况下限制因素是内存或磁盘I / O,而不是执行时间。 或者可以使用像缓存这样的非引擎优化。 对于这些语言来说,将重点放在语言和库特性集合上来优化速度可能更有意义。

这样做的好处是我们有两个优秀的高性能开源JavaScript引擎,可以并且正在为各种应用程序(如Node.js)重新使用它们。


其中很大一部分与社区有关。 Python和Ruby大部分没有企业支持。 没有人能够得到报酬来全职工作在Python和Ruby上(并且他们特别是没有得到报酬一直在CPython或MRI上工作)。 另一方面,V8得到了世界上最强大的IT公司的支持。

此外,V8可以更快,因为V8人员唯一关心的是解释器 - 他们没有标准的库可以工作,不用担心语言设计。 他们只是写翻译。 而已。

它与知识产权法无关。 Google合作伙伴也没有共同开发Python(它的创建者和其他一些提交者一起工作,但他们没有从Python获得报酬)。

Python速度的另一个障碍是Python 3.它的采用似乎成为语言开发人员的主要关注点,因为它们已经冻结了新语言功能的开发,直到其他实现迎头赶上。

在技​​术细节方面,我对Ruby没有多少了解,但是Python有许多可以使用优化的地方(而且Unladen Swallow是一个Google项目,在开始实施之前就开始实施这些)。 以下是他们计划的一些优化。 如果将JIT a la PyPy实现为CPython,我可以看到Python将来会获得V8的速度,但这在未来几年似乎不太可能(现在的重点是Python 3的采用,而不是JIT)。

许多人还认为,Ruby和Python可以从删除他们各自的全局解释器锁中受益匪浅。

你还必须明白,Python和Ruby比JS更重的语言 - 它们提供了更多的标准库,语言特性和结构。 仅仅面向对象的类系统就增加了很多的重量(我认为这是一种很好的方式)。 我几乎将Javascript看作是一种被嵌入的语言,就像Lua(在很多方面,它们是相似的)。 Ruby和Python有更丰富的功能集,而且这种表现力通常是以速度为代价的。

链接地址: http://www.djcxy.com/p/80417.html

上一篇: What blocks Ruby, Python to get Javascript V8 speed?

下一篇: Is int in C Always 32