Yes, check the link Tim Holy sent - its a command line option.
On Wednesday, October 22, 2014 12:27:32 PM UTC-4, [email protected] wrote: > > This works for me: >> >> julia> function mindists_sq(pos, dists_min, Acp) >> >> for i in 1:size(pos, 2) >> dists_min[i] = Inf >> for j in 1:size(Acp, 2) >> t = 0.0 >> for k=1:size(pos,1) >> t += (pos[k, i]-Acp[k, j])^2 >> end >> if t < dists_min[i] >> dists_min[i] = t >> end >> end >> end >> return dists_min >> end >> mindists_sq (generic function with 1 method) >> >> julia> function test() >> const pos = rand(3, 64) >> const Acp = rand(3, 1200) >> const dists_min = zeros(64) >> const tmp = zeros(typeof(Acp[1]), 1) >> @time mindists_sq(pos, dists_min, Acp) >> end >> test (generic function with 1 method) >> >> julia> test(); >> elapsed time: 0.001279041 seconds (0 bytes allocated) >> >> Is this how you unrolled the innermost loop too? >> > > No, I've been even further: > t += pos[k, i] > t -= Acp[k, j] > t ^= 2 > > But it does not change anything (no allocations :D). Thank you. > > I guess t in this case is allocated on the stack. I'm surprised that if I > allocate t on the heap I get such a large performance penalty (10-fold slow > down). I'm also surprised that t[:] += pos[k, i] allocates memory (and > incurs an even larger performance penalty). I really thought this was the > recommended way to perform inplace operations on arrays. > > So, is there any tool like Julia profiler but for memory allocation? > >
