这里不足为奇。graph-tool通过将主循环卸载到C
++来实现更高的性能。如果所有主循环都在Python中,则没有任何优势。对于其他库,例如numpy,也是如此。
实现边缘快速添加的正确方法是让图形工具执行主循环。您生成的网络是一个简单的增长模型,可以通过调用以下工具在graph-tool中实现:
G = price_network(n, gamma=0, directed=False)
在我的计算机中,大约需要15毫秒,n = 5000。
另请注意,由于每次迭代时都会创建具有所有顶点的新列表,因此python代码的速度不必要地慢。一个更快的版本是:
from numpy.random import randintn = 5000G = Graph(directed=False)G.add_vertex(n)G.add_edge(0, 1)for i in range(2, n): G.add_edge(i, randint(i))
对于更大的n值,一次而不是一个接一个地添加所有边会更快,即
from graph_tool.all import *from numpy.random import randintn = 5000G = Graph(directed=False)edges = [(0, 1)]for i in range(2, n): edges.append((i, randint(i)))G.add_edge_list(edges)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)