[ 
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)

Reply via email to