in reply to A memory efficient hash, trading off speed - does it already exist?

Perl preallocates hashes with 8 buckets. That takes some space, but that's just 32 bytes. So, if you have 4 elements in the hash, you would be wasting 16 bytes on most hashes, 20 bytes on a few, and maybe 24 bytes on a handful of hashes. This may look a lot, but compared to the minimum amount of memory a hash takes, this isn't that much.

perl -MDevel::Size -wle 'print Devel::Size::size ({})' 100

That's 100 bytes for a reference to an empty hash. And the reference isn't taking the majority of the memory!

If you want to save on your memory usage, you are way better off cutting down on your 120k hashes.

Abigail

  • Comment on Re: A memory efficient hash, trading off speed - does it already exist?
  • Download Code