Edit: It turns out that things generally (not just array/ref operations) slow down the more arrays have been created, so I guess this might just be meas
I think you're definitely seeing GC effects. I had a related issue in cassava (https://github.com/tibbe/cassava/issues/49#issuecomment-34929984) where the GC time was increasing linearly with increasing heap size.
Try to measure how the GC time and mutator time increase as you hold on to more and more arrays in memory.
You can reduce GC time with playing with the +RTS
options. For example, try setting -A
to your L3 cache size.