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?
>>>>> 
>>> 
>> 
>> 

Reply via email to