7

したがって、明らかに、2 つの頂点間のエッジを見つける簡単な方法は次のとおりです。

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

そのfilterステップはすべてのエッジを反復処理する必要があり、多くのエッジを持つ一部のアプリケーションでは非常に遅くなると思います。

別の方法は次のとおりです。

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

最初のアプローチよりも高速になるIDインデックスを使用するため、2番目のアプローチははるかに高速になると思います。

(IO に関して) どちらがより高速で効率的ですか?

私は Titan を使用しているので、答えを Titan 固有のものにすることもできます。

編集

時間的には、最初のアプローチの方が速いようです (頂点のエッジは 20k でした)b

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

イオはどうですか?

4

2 に答える 2