我沒有在我的一些代碼,發現關於正多少圖的兩種常見方法之間的測試頂點有,看看生成列表中哪些計數元素的方法變得更快。 Sage有一個生成器圖(n),它生成n個頂點上的所有圖。我創建了兩個函數,它們以兩種不同的方式獲取迭代器獲得的列表長度,並使用time.time()函數爲每個函數計時(平均超過100次測試運行)。的功能如下:
def test_code_list(n):
l = graphs(n)
return len(list(l))
和
def test_code_sum(n):
S = sum(1 for _ in graphs(n))
return S
現在我時間每個方法
import time
t0 = time.time()
for i in range(100):
test_code_list(5)
t1 = time.time()
avg_time = (t1-t0)/10
print 'average list method time = %s' % avg_time
t0 = time.time()
for i in range(100):
test_code_sum(5)
t1 = time.time()
avg_time = (t1-t0)/100
print "average sum method time = %s" % avg_time
平均列表方法時間= 0.0391882109642
平均總和方法時間= 0.0418473792076
因此,通過這種方式計算n = 5個頂點上的圖的數量,列表方法稍微快一點(儘管100次測試運行不是很好的樣本大小)。但是,當我增加了列表的長度由上N = 7個頂點試圖圖形計算(即改變的曲線圖(5)〜圖(7)),其結果是這樣的:
平均列表方法時間= 4.14753051996
平均求和方法時間= 3.96504004002
在這種情況下,求和方法稍快。總而言之,這兩種方法的速度大致相同,但差異可能取決於列表的長度(也可能僅僅是我平均超過100次測試運行,這並不是很高 - 會花費很長時間除此以外)。
來計算您將在內存中加載文件的行數! – hasen 2008-12-24 06:00:29
列表(所有序列類型)也是可迭代的。你的意思是「迭代器」 – hop 2008-12-24 07:09:49
@hasen:是的,但不是一次全部。 – Claudiu 2008-12-24 07:52:26