比较Python和R之间的函数打印

时间:2013-12-19 10:35:57

标签: python r performance

Python通常比R快得多,但是下面的代码在Python中花费的时间比在R中要多。

# R
for (i in 1:10000){print(i)}
# It takes less than a second

###############################################

# Python
for i in xrange(10000):
    print i
# It takes 5 minutes!

是什么解释了这种差异?

注意:我的问题不是要知道如何提高代码的性能,而是“为什么Python在运行此代码时比R慢得多”。

1 个答案:

答案 0 :(得分:2)

判决:

原因是打印,在与R进行比较时,写入stdout的python非常慢,所以试图写入标准符10000时间!在python中可能看起来有点慢(忽略范围开销)但是一次打印它会显着减少这个差距。

此代码更快,因为它只写入stdout一次:

lst = []

for i in range(10000):
    lst.append(i)

print lst

但这并不是因为这会写入stdout流10000次:

for i in range(10000):
    print i

还使用内存效率更高的xrange()函数,并且由于这些原因,只有python 2的range()函数已被python 3中的xrange()函数替换...

必须要说的是,无论你的原始代码只用了大约5-6秒而不是5分钟......