I have vecs::Vector{Vector{Float32}}
(really, the columns of a dataframe), each of which has length
of 300000. I’m interested in the performance of v[t]
, where t
is a BitVector
. I’m finding that performance is strangely bimodal. Why?
# t = rand(Bool, length(vecs[1]))
p = plot(ylim=[0.0003,0.001], legend=false)
gc_enable(false)
for i in 1:10
plot!([@elapsed(v[t]) for v in vecs])
end
gc_enable(true)
p
If I leave the gc on, I get more jumps
In the above, mean(t)
is 0.75, but it has long stretches of true
and false
. If I use t = rand(Bool, length(vecs[1]))
, then the bimodality disappears.
Am I seeing memory hierarchy effects? GC generations?