in reply to Slowness when inserting into pre-extended array
Pre-extending can be very worthwhile if you undo it first. As tilly has pointed out, preextending the array gives you a bigger array filled with undefs and pushing on the end just makes it even bigger, since you're not overwriting any of those undefs. What you should do instead is:
This will make the array big enough to hold 1 million elements (use whatever size you really need) then set it to be holding zero elements but.... perl doesn't release the memory it allocated to the array--it's still there, attached to the array, as a ready cache. When you push onto the array perl will reuse this space until you run out past where you pre-extended.$#foo = 1_000_000; $#foo = 0;
|
---|
In Section
Seekers of Perl Wisdom