Гремлин: Какой эффективный способ найти грань между двумя вершинами?

Очевидно, что прямой способ найти ребро между двумя вершинами состоит в следующем:

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");

Я предполагаю, что второй подход мог бы быть намного быстрее, так как он будет использовать индекс индекса, который сделает его быстрее, чем первый подход.

Какой из них быстрее и эффективнее (с точки зрения IO)?

Я использую Титан, так что вы также можете сделать свой ответ Титан конкретным.

редактировать

С точки зрения времени, кажется, что первый подход быстрее (ребра были 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

Как насчет IO?

Ответы на вопрос(2)

Ваш ответ на вопрос