Jake Mannix commented on GIRAPH-28:

The alternative to Iterable<Edge<I, E>> is Iterable<I>, returning only the 
target vertices, and you can call getEdgeValue(targetVertexId) on any of these 
if you need it.  Again, many algorithms will simply do something like

for(I targetId : vertex) {
  sendMsg(targetId, someFunction(baseMsg, getEdgeValue(targetId));

which is maybe a little nicer looking (or at least not uglier) than:

for(Edge<I, E> edge : vertex) {
  sendMsg(edge.getVertexId(), someFunction(baseMsg, edge.getValue());

And then there are no Edge objects hanging around.

Alternatively, Edge could act just like a typical Writable, and the 
Iterator<Edge<I, E>> iterates over the *same* Edge object setting different 
values on it as next() is called.

> Introduce new primitive-specific MutableVertex subclasses
> ---------------------------------------------------------
>                 Key: GIRAPH-28
>                 URL: https://issues.apache.org/jira/browse/GIRAPH-28
>             Project: Giraph
>          Issue Type: New Feature
>          Components: graph
>    Affects Versions: 0.70.0
>            Reporter: Jake Mannix
>            Assignee: Jake Mannix
>         Attachments: GIRAPH-28.diff, GIRAPH-28.diff
> As discussed on the list, 
> MutableVertex<LongWritable,DoubleWritable,FloatWritable,DoubleWritable> (for 
> example) could be highly optimized in its memory footprint if the vertex and 
> edge data were held in a form which minimized Java object usage.

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to