[
https://issues.apache.org/jira/browse/TINKERPOP-2829?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17640145#comment-17640145
]
Stephen Mallette commented on TINKERPOP-2829:
---------------------------------------------
Looks like {{LazyBarrierStrategy}} doesn't want to inject a barrier when you
use the step label. The lack of a barrier step is what is accounting for the
differences in the profiles. Offhand, I'm not sure if it is purposeful or not
to omit the barrier there. This would require more investigation, but it feels
like the presence of a label that isn't used probably shouldn't prevent
{{LazyBarrierStrategy}} from doing what it is meant to do. As a workaround I
would think you could add the {{barrier()}] step manually in this case.
> `AS` clause may slow down the query which ups to 60x times
> ----------------------------------------------------------
>
> Key: TINKERPOP-2829
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2829
> Project: TinkerPop
> Issue Type: Improvement
> Components: server
> Affects Versions: 3.5.0, 3.6.1
> Reporter: Yuancheng
> Priority: Major
> Labels: Performance
>
> A potential performance bug or missed optimization exists when handling `AS`
> clause.
>
> {code:java}
> The as()-step is not a real step, but a "step modulator" similar to by() and
> option(). With as(), it is possible to provide a label to the step that can
> later be accessed by steps and data structures that make use of such labels —
> e.g., select(), match(), and path {code}
> It seems that `AS` should not impact the performance in this way:
>
>
> {code:java}
> ## PROFILE VERSION: 3.6.1 ##
> ## DATASET:
> https://raw.githubusercontent.com/krlawrence/graph/master/sample-data/air-routes-latest.graphml
> gremlin> g.V().bothE().otherV().bothE().otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 1.973 1.03
> VertexStep(BOTH,vertex) 115290
> 115290 32.040 16.75
> NoOpBarrierStep(2500) 115290
> 13560 24.857 13.00
> VertexStep(BOTH,vertex) 20833868
> 507044 132.407 69.22
> >TOTAL -
> - 191.279 -
> gremlin> g.V().bothE().otherV().bothE().otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 1.974 1.06
> VertexStep(BOTH,vertex) 115290
> 115290 31.432 16.89
> NoOpBarrierStep(2500) 115290
> 13560 24.896 13.38
> VertexStep(BOTH,vertex) 20833868
> 507044 127.837 68.68
> >TOTAL -
> - 186.141 -
> gremlin> g.V().as('x').bothE().otherV().bothE().otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[])@[x] 3749
> 3749 3.461 0.08
> VertexStep(BOTH,vertex) 115290
> 115290 30.815 0.67
> VertexStep(BOTH,vertex) 20833868
> 20833868 4566.277 99.25
> >TOTAL -
> - 4600.554 -
> gremlin> g.V().as('x').bothE().otherV().bothE().otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[])@[x] 3749
> 3749 3.371 0.07
> VertexStep(BOTH,vertex) 115290
> 115290 28.952 0.63
> VertexStep(BOTH,vertex) 20833868
> 20833868 4546.777 99.29
> >TOTAL -
> - 4579.101 -
> gremlin> g.V().bothE().as('x').otherV().bothE().otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 2.710 0.05
> VertexStep(BOTH,edge)@[x] 115290
> 115290 37.150 0.73
> EdgeOtherVertexStep 115290
> 115290 45.935 0.90
> VertexStep(BOTH,vertex) 20833868
> 20833868 5021.292 98.32
> >TOTAL -
> - 5107.089 -
> gremlin> g.V().bothE().as('x').otherV().bothE().otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 2.767 0.05
> VertexStep(BOTH,edge)@[x] 115290
> 115290 36.794 0.71
> EdgeOtherVertexStep 115290
> 115290 46.275 0.89
> VertexStep(BOTH,vertex) 20833868
> 20833868 5085.313 98.34
> >TOTAL -
> - 5171.151 -
> gremlin> g.V().bothE().otherV().as('x').bothE().otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 1.747 0.82
> VertexStep(BOTH,vertex) 115290
> 115290 34.879 16.45
> NoOpBarrierStep(2500)@[x] 115290
> 13560 29.119 13.74
> VertexStep(BOTH,vertex) 20833868
> 507044 146.249 68.99
> >TOTAL -
> - 211.995 -
> gremlin> g.V().bothE().otherV().as('x').bothE().otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 1.995 1.00
> VertexStep(BOTH,vertex) 115290
> 115290 33.906 17.03
> NoOpBarrierStep(2500)@[x] 115290
> 13560 29.064 14.60
> VertexStep(BOTH,vertex) 20833868
> 507044 134.170 67.38
> >TOTAL -
> - 199.136 -
> gremlin> g.V().bothE().otherV().bothE().as('x').otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 2.594 0.02
> VertexStep(BOTH,vertex) 115290
> 115290 36.178 0.28
> VertexStep(BOTH,edge)@[x] 20833868
> 20833868 5203.088 40.90
> EdgeOtherVertexStep 20833868
> 20833868 7480.516 58.80
> >TOTAL -
> - 12722.377 -
> gremlin> g.V().bothE().otherV().bothE().as('x').otherV().profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 2.608 0.02
> VertexStep(BOTH,vertex) 115290
> 115290 36.527 0.29
> VertexStep(BOTH,edge)@[x] 20833868
> 20833868 5203.320 40.74
> EdgeOtherVertexStep 20833868
> 20833868 7531.105 58.96
> >TOTAL -
> - 12773.562 -
> gremlin> g.V().bothE().otherV().bothE().otherV().as('x').profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 1.586 0.73
> VertexStep(BOTH,vertex) 115290
> 115290 32.662 15.05
> NoOpBarrierStep(2500) 115290
> 13560 30.420 14.02
> VertexStep(BOTH,vertex)@[x] 20833868
> 507044 152.350 70.20
> >TOTAL -
> - 217.020 -
> gremlin> g.V().bothE().otherV().bothE().otherV().as('x').profile()
> ==>Traversal Metrics
> Step Count
> Traversers Time (ms) % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[]) 3749
> 3749 1.378 0.62
> VertexStep(BOTH,vertex) 115290
> 115290 33.008 14.88
> NoOpBarrierStep(2500) 115290
> 13560 34.438 15.53
> VertexStep(BOTH,vertex)@[x] 20833868
> 507044 152.968 68.97
> >TOTAL -
> - 221.793 -
> gremlin> {code}
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)