[ 
https://issues.apache.org/jira/browse/TINKERPOP-1642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15922929#comment-15922929
 ] 

stephen mallette commented on TINKERPOP-1642:
---------------------------------------------

First, as a quick update as there are some folks keeping an eye on this issue, 
the latest TINKERPOP-1642 branch is significantly faster at this point than 
what is currently performing in tp32. Specifically, long chained mutating 
traversals run more on par with the speed of the same mutations broken into 
lots of smaller individual traversals. As a side-effect we should also see 
improvements with traversals that have use of labels/select. There has been 
some improvement on {{g.addE()}} and the speed of {{g.addV()}} with properties 
has about doubled at this point as well. All that said, there is still room for 
improvement as the traversal API still lags behind the structure API (just by 
much less than before). I'm not sure what our goal is for this ticket, but it 
would be nice if we could achieve a reasonable parity between them.

As an update on current analysis, dropping all unnecessary strategies improves 
things quiet significantly in comparison to the current 
[head|https://github.com/apache/tinkerpop/commit/1fac7cf3c59b874ca4acb950030b1cd98410a639]
 of TINKERPOP-1642:

* {{g.addE()}}  - 2x faster
* {{g.addV()}} -  not much change - perhaps that makes sense since {{addV()}} 
with a bunch of properties would still just yield a single {{AddVertex}} step 
to iterate strategies over
* long chained traversals improved by a factor of 6x when adding vertices/edges 
and not much change when just adding vertices

Ultimately it seems like the improvements related to not applying strategies 
seem to mostly help with adding edges.

based on these improvements it seems wise to consider TINKERPOP-1366 or other 
related work to drop out strategies for a traversal that don't need to be 
executed base on the steps present (e.g. why execute {{ProfileStrategy}} if 
{{profile()}} was never called. Or is there some way to detect a traversal with 
just mutating steps and then do smart strategy application that way?

> Improve performance of mutating traversals
> ------------------------------------------
>
>                 Key: TINKERPOP-1642
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1642
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: process
>    Affects Versions: 3.2.4
>            Reporter: stephen mallette
>            Assignee: stephen mallette
>            Priority: Critical
>
> Make an attempt improve performance of mutating traversals. Some general 
> goals for this ticket should be to:
> 1. Improve performance parity of structure and process methods for modifying 
> the graph - structure is pretty far ahead.
> 2. Improve the speed of large chained mutating traversals - see 
> http://stackoverflow.com/q/41926409/1831717
> 3. Determine ways to make these performance improvements in {{gremlin-core}} 
> so that they may benefit all {{Graph}} implementations
> 4. Improve the speed of TinkerGraph specifically if possible as it is used 
> for subgraphing functions in many cases and ends up being useful regardless 
> of the graph implementation ultimately used.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to