2013-12-19 61 views
0

之間打印Python是通常快得多除了R,但下面的代碼需要更多的時間在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

'範圍(10000)'建立一個10000元素的列表,而不是僅僅通過數字迭代。改用'xrange(10000)'。 – Volatility

+0

即使'範圍'的開銷,該代碼仍然運行在我的幾分之一秒。您使用什麼操作系統? – Blender

+1

我假設你有一個大問題,你實際上試圖得到。可能很高興看到這個問題,而不是這個微不足道的問題......特別是因爲在R中你可以輸入'print(1:10000)'。 – Thomas

回答

2

的判決:以R進行比對,試圖寫到標準輸出10000時候

造成這種情況的原因是印刷,書寫蟒蛇到標準輸出是相當慢!在Python中看起來可能有點慢(忽略範圍開銷),但是一次打印它會顯着減少這種差距。

此代碼是更快,因爲它寫到只有一次標準輸出:

lst = [] 

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

print lst 

然而,這並不是因爲這個寫到標準輸出流10000次:

for i in range(10000): 
    print i 

而且使用更內存高效xrange()功能和由於這些原因,只有蟒蛇2的range()函數已被替換爲python 3中的xrange()函數...

必須說,不管你原來的代碼只花了大約5-6秒而不是5分鐘... ...