我正在通過某人發佈的link about generators。在開始時他比較了以下兩個函數。在他的設置中,他發現發電機的速度提高了5%。蟒蛇發電機速度3
我正在運行Windows XP,python 3.1.1,並且似乎無法重複結果。在使用所提供的日誌和高達1GB的重複數據進行測試時,我一直將「舊方式」(logs1)顯示爲略快。
有人可以幫助我瞭解發生了什麼不同嗎?
謝謝!
def logs1():
wwwlog = open("big-access-log")
total = 0
for line in wwwlog:
bytestr = line.rsplit(None,1)[1]
if bytestr != '-':
total += int(bytestr)
return total
def logs2():
wwwlog = open("big-access-log")
bytecolumn = (line.rsplit(None,1)[1] for line in wwwlog)
getbytes = (int(x) for x in bytecolumn if x != '-')
return sum(getbytes)
*編輯,拷貝/粘貼
在我看來,這兩個功能本質上是一樣的。在任何情況下,你都可以建立一個巨大的清單,而你可以使用生成器。所以我並不感到驚訝,他們跑的速度相同。 – MatrixFrog 2010-03-08 05:10:52
這是有道理的,我只是好奇他爲什麼得到5%的速度增加,我看到一直下降1%。 – Will 2010-03-08 05:54:39