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

Reply via email to