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慢得多”。
答案 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分钟......