i'm with that. https://issues.apache.org/jira/browse/TINKERPOP3-957
i'll need to adjust my tutorial a little bit On Thu, Nov 12, 2015 at 12:55 PM, Marko Rodriguez <[email protected]> wrote: > Hi, > > I think we should keep the docs as they are for now. We should make a > ticket to get addV() faster or promote a use that is not just "g.addV()", > but like "__(0..100).addV()" (thus, injections). We will never get > solo-addV() as fast as addVertex() as addV() has the overhead of traversal > construction and execution, but hopefully we can bring it down to the 2-3x > time difference by 3.1.1. > > Marko. > > http://markorodriguez.com > > On Nov 12, 2015, at 10:50 AM, Stephen Mallette <[email protected]> > wrote: > > > Based on this quick test it would seem that we need to promote the dual > > usage. I'll try to adjust the docs a bit to reflect that in time for > > release. > > > > On Thu, Nov 12, 2015 at 12:35 PM, Marko Rodriguez <[email protected]> > > wrote: > > > >> Hi, > >> > >> Didn't see you had the code in there. I did it, here it is. > >> > >> gremlin> clock {testAddVertex(100000)} > >> ==>40.35240715 > >> gremlin> clock {testAddV(100000)} > >> ==>426.87777037 > >> > >> Marko. > >> > >> http://markorodriguez.com > >> > >> On Nov 12, 2015, at 10:33 AM, Marko Rodriguez <[email protected]> > >> wrote: > >> > >>> Just out of curiosity -- do the testAddVertex() first then do > testAddV(). > >>> > >>> Marko. > >>> > >>> http://markorodriguez.com > >>> > >>> On Nov 12, 2015, at 10:29 AM, Daniel Kuppitz <[email protected]> wrote: > >>> > >>>> Here's the result of a pretty simple performance comparison: > >>>> > >>>> gremlin> testAddV = { num -> graph = TinkerGraph.open(); g = > >>>> graph.traversal(); for (i = 0; i < num; i++) { g.addV(id, i).next() } > } > >>>> ==>groovysh_evaluate$_run_closure1@30b9eadd > >>>> gremlin> testAddVertex = { num -> graph = TinkerGraph.open(); for (i = > >> 0; i > >>>> < num; i++) { graph.addVertex(id, i) } } > >>>> ==>groovysh_evaluate$_run_closure1@2e647e59 > >>>> gremlin> clock {testAddV(100000)} > >>>> ==>462.04376528 > >>>> gremlin> clock {testAddVertex(100000)} > >>>> ==>70.90365949999999 > >>>> > >>>> > >>>> As you can see, addVertex() is almost 7x as fast as addV(). However, > if > >> you > >>>> rely on traversal strategies, you would - of course - still prefer > >> addV() > >>>> over addVertex(). > >>>> > >>>> Cheers, > >>>> Daniel > >>>> > >>>> > >>>> On Thu, Nov 12, 2015 at 6:13 PM, Stephen Mallette < > [email protected] > >>> > >>>> wrote: > >>>> > >>>>> i think we have a somewhat confusing story about Graph.addVertex() > and > >>>>> GraphTraversalSource.addV(). We've wanted to promote use of > >>>>> TraversalSource but our docs make a fair bit of use of > >> Graph.addVertex() > >>>>> and Vertex.addEdge() in various places. It seems that if we want to > >>>>> downplay core Graph API methods, we should limit core Graph API > >> methods to > >>>>> here only > >>>>> > >>>>> > >> > http://tinkerpop.incubator.apache.org/docs/3.0.2-incubating/#_the_graph_structure > >>>>> > >>>>> of course, @dkuppitz made the side-comment to me that he would never > >> use > >>>>> addV() when data loading, citing possible performance reasons. > >>>>> > >>>>> I'd also note that for simple data loading use cases the > >>>>> GraphTraversalSource.addE() isn't quite as intuitive to use as > >>>>> Vertex.addEdge(), > >>>>> > >>>>> gremlin> v1 = g.addV(id, 1, label, "person", "name", "marko", "age", > >>>>> 29).next() > >>>>> ==>v[1] > >>>>> gremlin> v2 = g.addV(id, 3, label, "software", "name", "lop", "lang", > >>>>> "java").next() > >>>>> ==>v[3] > >>>>> gremlin> g.V(v1).as('a').V(v2).addInE('created', 'a', "weight", 0.4) > >>>>> ==>e[4][1-created->3] > >>>>> > >>>>> compared with just: > >>>>> > >>>>> gremlin> v1.addEdge("created", v2, id, 9, "weight", 0.4) > >>>>> ==>e[9][1-created->3] > >>>>> > >>>>> So, up for discussion is: Do we promote core Graph API methods for > bulk > >>>>> loading? Or do we promote consistent use of GraphTraversalSource in > all > >>>>> cases? > >>>>> > >>> > >> > >> > >
