Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么ruby 1.9比python 2.7和3.2快?_Python_Ruby_Performance - Fatal编程技术网

为什么ruby 1.9比python 2.7和3.2快?

为什么ruby 1.9比python 2.7和3.2快?,python,ruby,performance,Python,Ruby,Performance,我读了这组链接: ruby 1.9似乎比1.8快2倍。。。比python 2.7和3.2更快 我做了一些测试,不仅是递归(我知道python在这方面做得不好),还有更多标准的东西 我的问题是:ruby团队是如何做到这一点的?2倍的改善? 它们是否包括JIT编译器/优化器或其他东西 所以你指向一个博客,它展示了一个算法的2个天真的实现,这个算法本身就很糟糕。。。然后,作者比较了这两个人为设计的程序,并确定整个“运行时环境”会烟消云散(其他环境) 不仅这些基准测试不能证明任何东西(除了特定基准测试的

我读了这组链接:

ruby 1.9似乎比1.8快2倍。。。比python 2.7和3.2更快

我做了一些测试,不仅是递归(我知道python在这方面做得不好),还有更多标准的东西

我的问题是:ruby团队是如何做到这一点的?2倍的改善?
它们是否包括JIT编译器/优化器或其他东西

所以你指向一个博客,它展示了一个算法的2个天真的实现,这个算法本身就很糟糕。。。然后,作者比较了这两个人为设计的程序,并确定整个“运行时环境”会烟消云散(其他环境)


不仅这些基准测试不能证明任何东西(除了特定基准测试的执行速度),而且如果您实际查看了实现,您可以找到python中更优化的部分,创建自己的基准测试,经常使用该部分,并“证明”相反的结果。

我是一个rubyist,我认为你没有充分阅读那些(相当旧的)文章。两人都承认使用过。。。“耸人听闻”的标题。而且他们使用的算法不是最优的。所以在我看来它们没有什么价值

我所知道的比较语言的“最佳”地方是。我引用“最佳”是因为正如其他人所说,基于一系列特定实现的阶段语言速度缺乏统计上的严格性

也就是说,如果你将ruby 1.9与Python3进行比较,你会得到

结果是:在使用的10个测试中,ruby 1.9在2个测试中比Python快。它在4中是相似的,在其余的部分中是较慢的(最后一个例子太糟糕了,我忍不住要称之为虚假的)


因此,根据这10个不同的测试,我们只能得出结论:不,ruby总体上并不比Python快。(仅在某些特定情况下)。

除了@egarcia和@viraptor的评论之外,我想指出的是,这些基准比较Ruby和CPython,特别是python实现,而不是语言。有很多更快的python实现,比如PyPy。还有不同的Ruby实现。您不能比较“语言性能”,只能比较特定的实现


有关Fast2.xPython的更多信息-

编程语言基准几乎总是无用的。谎言、该死的谎言和基准。我同意格雷格的观点。这个问题很糟糕。答案很好。怎么办?投票表决一个似乎有争议的问题?嗯,有12张赞成票,这张有两张反对票…@Jakob Bowyer“毕竟,事实就是事实,尽管我们可以笑着互相引用这位明智的政治家的话,‘谎言——该死的谎言——和统计数字’,但仍然有一些简单的数字,最简单的人必须理解,最精明的人无法摆脱。”伦纳德·亨利·考特尼,1895你的意思是ruby 1.9应该与python/pypy进行比较吗???@Eric:你在跑多少袜子?@Eric我的意思是“ruby 1.9”和“python 2.x”或“python 3.x”是语言,比较它们的性能是毫无意义的,因为语言的性能没有定义。每种语言都有几个不同的实现,具有不同的性能配置文件。对于python来说,它们是CPython、pypypy、IronPython、Jython、Pyjamas等等。对于Ruby,它们是CRuby、IronRuby、JRuby、Rubinius等等。因此,即使一些基准测试显示CRuby比CPython快(事实并非如此),也并不意味着Ruby比Python快,因为Python实现速度更快。因此,你不认为Ruby 1.9和Python3的“标准”实现分布在知名网站上,如和?@igouy,它们通常被称为“参考实现”,而不是“标准”。是的,CRuby和CPython是Ruby和Python的参考实现。那又怎么样?这里的参考实现是定义语言的语法和语义,而不是它的性能。PyPy或JRuby与CPython或rubymri(CRuby)一样,都是Python和Ruby。至于“知名网站”,PyPy正在迁移到python.org基础设施,很快(TM)也将从python.org上提供[这并不重要,tho]。>>最后一个例子太糟糕了,我忍不住要称之为虚假