我没有在我的一些代码,发现关于正多少图的两种常见方法之间的测试顶点有,看看生成列表中哪些计数元素的方法变得更快。 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