我最近接手了Python3,并且比其他类似的动态语言(主要是Perl)慢得多。
在尝试学习Python的过程中,我遇到了几个在线编码挑战,Python通常比Perl慢至少10倍,并且使用至少2倍的内存。
研究这种好奇心我遇到了人们,问为什么Python比C / C ++慢,这应该是非常明显的,但不是任何将它与其他类似语言进行比较的帖子。还有这个信息丰富但过时的基准http://raid6.com.au/~onlyjob/posts/arena/
,证实它相当缓慢。
我明确地询问标准的Python实现,而不是像pypy或类似的东西。
编辑: 我感到惊讶的原因来自codeeval.com上的结果页面。 这里有两个脚本来大写一行中每个单词的第一个字符。
Python3(3.4.3)v1
import sys
import re
def uc(m):
c = m.group(1)
return c.upper()
f = open(sys.argv[1], "r")
for line in f:
print(re.sub(r"\b(\D)", uc, line))
Perl(5.18.2)
use strict;
use warnings "all";
open(my $fh, "<", "$ARGV[0]") or die;
while (<$fh>)
{
s,\b(\D),uc $1,ge;
print;
}
close $fh;
由于我对Python不是很熟悉,我还尝试了不同的版本,看看是否有任何不同。
Python3 v2:
import sys
f = open(sys.argv[1], "r")
for line in f:
lst = [word[0].upper() + word[1:] for word in line.split()]
print(" ".join(lst))
结果完全不同,如图所示:(此图像中的Python结果来自v1,v2具有几乎相同的统计数据(+ 1 ms执行时间,〜相同的内存使用量)