Tim,
Thank you very much. I didn't realized there were heaps in Collections.
I've tested them and they're much faster / memory efficient than either of
the ones in DataStructures:
julia> g = readgraph("/Users/seth/Downloads/pgp2.jgz")
{39796, 301498} directed graph
julia> @time z = betweenness_centrality(g);
1238 seconds (3769 M allocations: 272 GB, 18.38% gc time)
This means that betweenness centrality in LightGraphs is on par with igraph
and faster than graph-tool, which is a huge deal.
Thanks again!
On Thursday, June 4, 2015 at 2:34:01 PM UTC-7, Tim Holy wrote:
>
> My default answer to such questions is to suggest profiling (I don't
> really
> know/remember the DataStructures code very well).
>
> You can also try the binary heap in Base.Collections. I've not compared
> them
> directly.
>
> Best,
> --Tim
>
> On Thursday, June 04, 2015 12:43:34 PM Seth wrote:
> > I created an issue
> > <https://github.com/JuliaLang/DataStructures.jl/issues/95> in
> > DataStructures.jl but was unsure whether or not that was the right
> > approach. In any case, I'll restate the question here with apologies for
> > any inappropriate duplication.
> >
> > I've been using mutable_binary_minheap for a Dijkstra calculation and am
> > getting reasonable performance for betweenness centrality (which
> basically
> > does all-pairs Dijkstra) in a large graph:
> >
> > julia> g = readgraph("/Users/seth/Downloads/pgp2.jgz")
> > {39796, 301498} directed graph # {number of vertices, number of edges}
> > julia> @time z = betweenness_centrality(g);
> > 1426 seconds (3768 M allocations: 328 GB, 21.91% gc time)
> >
> > Realizing that I really didn't need the mutability (I'm just push!ing
> and
> > pop!ping), I switched over to binary_minheap, thinking that I'd get at
> > least the same, but possibly better, performance. However:
> >
> > julia> @time z = betweenness_centrality(g);
> > 1743 seconds (8469 M allocations: 385 GB, 28.40% gc time
> >
> > These results are repeatable (I ran each test 3 times in clean
> > environments).
> >
> > Why would binary_minheap be so much slower than its mutable counterpart,
> > and why would it require more than twice the number of allocations (note
> > that the amount of memory allocated is also different, but maybe not
> > significantly so)?
> >
> > Thanks for any assistance / insight.
>
>