Gremlin: Was ist ein effizienter Weg, um eine Kante zwischen zwei Eckpunkten zu finden?

So offensichtlich ist ein direkter Weg, um eine Kante zwischen zwei Eckpunkten zu finden:

graph.traversal().V(outVertex).bothE(edgeLabel).filter(__.otherV().is(inVertex))

Ich fühle, dassfilter step muss alle Kanten durchlaufen, was bei einigen Anwendungen mit vielen Kanten sehr langsam ist.

Ein anderer Weg könnte sein:

traversal = graph.traversal()
                  .V(outVertex)
                  .bothE(edgeLabel)
                  .as("x")
                  .otherV()
                  .is(outVertex) // uses index?
                  .select("x");

Ich gehe davon aus, dass der zweite Ansatz viel schneller sein könnte, da er den ID-Index verwendet, wodurch er schneller als der erste Ansatz ist.

Welche ist schneller und effizienter (in Bezug auf IO)?

Ich verwende Titan, daher können Sie Ihre Antwort auch titanspezifisch gestalten.

Bearbeite

In Bezug auf die Zeit scheint der erste Ansatz schneller zu sein (Kanten waren 20k für Vertexb

gremlin> clock(100000){g.V(b).bothE().filter(otherV().is(a))}
==>0.0016451789999999999
gremlin> clock(100000){g.V(b).bothE().as("x").otherV().is(a).select("x")}
==>0.0018231140399999999

Wie wäre es mit IO?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage