# Vector filtering performance and... gc?

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?