Nach dem Blick auf die beeindruckende performance comparison, entschied ich, dass ich versuchen würde, Graph-Tool. Zum Vergleich habe ich Codes geschrieben, um einen zufälligen Baum mit beiden Paketen zu erzeugen.Grafik-Tool überraschend langsam im Vergleich zu Networkx
Der Grafik-Werkzeug-Code:
import numpy as np
import graph_tool.all as gt
# construct an initial graph with two nodes and one link
n = 5000
G = gt.Graph(directed = False)
G.add_edge(0, 1)
for t in range(2, n):
# connect the new vertex to one of the old vertices randomly
G.add_edge(np.random.choice(range(t)), t)
Der Code NetworkX:
import networkx as nx
import numpy as np
n = 5000
# initial graph
G = nx.Graph()
G.add_edge(0, 1)
for t in range(2, n):
G.add_edge(t, np.random.choice(range(t)))
Das Grafik-Werkzeug, dauert etwa 14 Sekunden auf meiner 4-Core-Maschine während NetworkX dauert weniger als 2 Sekunden auf die gleiche Maschine! Fehle ich etwas Offensichtliches?
Vielen Dank im Voraus.
Ich würde vermuten, dass das Hinzufügen von Kanten nacheinander sind langsamer als einige andere Anwendungsfälle (z. B. viele Suchen eines bereits vorhandenen Graphen). – Blckknght
Eigentlich führe ich komplizierter Code mit diesem und noch NetzwerkX gibt mir bessere Leistung. (Dieser: http://link.springer.com/article/10.1140/epjb/e2015-60501-y#page-1) – Peaceful
Könnte es sein, dass etwas über die Initialisierung des Netzwerks langsam ist? – Joel