为什么Ruby 1.9比Python 2.7和3.2更快?

10
жИСйШЕиѓїдЇЖињЩдЇЫйУЊжО•пЉЪhttp://pack.li/L Ruby 1.9дЉЉдєОжѓФ1.8ењЂ2еАН...еєґдЄФжѓФPython 2.7еТМ3.2ињШи¶БењЂгАВ
жИСињЫи°МдЇЖдЄАдЇЫжµЛиѓХпЉМдЄНдїЕеЬ®йАТељТжЦєйЭҐпЉИжИСзЯ•йБУPythonеЬ®ињЩжЦєйЭҐеЊИеЈЃпЉЙпЉМиАМдЄФеЬ®жЫіж†ЗеЗЖзЪДдЄЬи•њдЄКдєЯжШѓе¶Вж≠§гАВ
жЙАдї•жИСзЪДйЧЃйҐШжШѓпЉЪRubyеЫҐйШЯжШѓе¶ВдљХеБЪеИ∞ињЩдЄАзВєзЪДпЉЯдїЦдїђеМЕжЛђдЇЖJITзЉЦиѓСеЩ®/дЉШеМЦеЩ®жИЦеЕґдїЦдЄЬи•њеРЧпЉЯ

37
编程语言基准测试几乎总是无用的。 - Greg Hewgill
10
谎言、可恶的谎言和基准测试。我同意Greg的观点。 - Jakob Bowyer
2
糟糕的问题。伟大的答案。该怎么办?给一个看起来有争议的问题点赞吗?嗯。 - S.Lott
8
为什么Python比Ruby更快的问题(https://dev59.com/XXA75IYBdhLWcg3wg5Zh)得到了12个赞,而这一个回答则有两个反对票... - steenslag
(开启偏执模式 :) 并且这些链接恰好被添加到一个非常新鲜的网站的“链接包”中(目前,pack.li/P已定义但不是pack.li/Z;“自开始以来已添加了23个链接包”),在这里一个人可以“收集链接并得到报酬”。 (依然保持偏执模式 :) - tzot
1
@Jakob Bowyer:“毕竟,事实就是事实,虽然我们可能会引用智慧政治家的话语并相互嘲笑‘谎言——该死的谎言——和统计数据’,但仍有一些简单的数字是最简单的人必须理解的,而最狡猾的人也无法扭曲。”莱昂纳德·亨利·科特尼,1895年。 - igouy
3个回答

28

我是一名Ruby程序员,我认为你没有完整阅读那些相当古老的文章。两篇文章都承认使用了“耸人听闻”的标题,并且它们使用的算法并不是最优的。所以在我的眼中,它们的价值很小。

我知道的“最好”的比较编程语言的地方是http://benchmarksgame.alioth.debian.org/。我用引号括起来的原因是其他人都在说,基于一堆特定实现的语言速度进行分析缺乏统计学上的严谨性。

话虽如此,如果你将Ruby 1.9与Python 3进行比较,你会得到这些结果

结果是:在使用的10个测试中,Ruby 1.9比Python更快的有2个测试。在4个测试中两者差不多,在其余的测试中Ruby更慢(最后一个例子太糟糕了,我很想称它为虚假的)。

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


最后一个例子太糟糕了,我很想称它为伪造。难道没有人知道如何编写使用GMP的Ruby程序吗? :-) - igouy

6

所以你指出了一个展示了两种稚嫩的算法实现的博客......然后作者比较了这两个人造程序,得出结论:整个运行环境胜过其他环境。

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


6
除了@egarcia和@viraptor的评论外,我想指出这些基准测试比较的是Ruby和CPython,特定的Python实现,而不是语言。有更快的Python实现,例如PyPy。也有不同的Ruby实现。你不能比较“语言性能”,只能比较特定的实现。
获取更多关于快速2.x Python的信息,请访问:http://speed.pypy.org/

你的意思是 Ruby 1.9 应该和 Python / PyPy 进行比较吗? - Eric
2
@Eric:你正在运行多少个进程? - user1228
1
@Eric 我指的是 'Ruby 1.9' 和 'Python 2.x' 或者 'Python 3.x' 是_语言_,比较它们的性能是没有意义的,因为_语言_的性能并未被定义。这些语言中的每一种都有几个不同的实现,具有不同的性能配置文件。例如对于 Python,它们是 CPython、PyPy、IronPython、Jython、Pyjamas 等等。对于 Ruby 来说,它们是 CRuby、IronRuby、JRuby、Rubinius 等等。因此,即使某些基准测试显示 CRuby 比 CPython 快(这并不是事实),这也不意味着 Ruby 比 Python 更快,因为还有更快的 Python 实现可用。 - Daniel Kluev
那么您认为像http://www.ruby-lang.org/en/downloads/和http://www.python.org/download/releases/3.2/这样的知名网站上没有“标准”的Ruby 1.9和Python3实现吗? - igouy
2
@igouy,它们通常被称为“参考实现”,而不是“标准”。是的,CRuby和CPython是Ruby和Python的参考实现。那又怎样?参考实现的作用在于定义语言的语法和语义,而不是性能。因此,PyPy或JRuby与CPython或Ruby MRI(CRuby)同样是Python和Ruby。至于“知名网站”,PyPy正在转移到python.org基础设施,并且很快(TM)也将可以从python.org获得[尽管这并不重要]。 - Daniel Kluev
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接