ObjStore::AVHV - Hash interface, array performance
package MatchMaker::Person; use base 'ObjStore::AVHV'; use fields qw( height hairstyle haircolor shoetype favorites );
Support for extremely efficient records.
Even without optimization or benchmarks, the memory savings achieved by factoring the hash keys is quite significant and a large performance win. Perl implements a similar strategy by globally sharing hash keys across all (transient) hashes.
This could be implemented with zero per-record overhead if we stored the layout in a per-class global. This would definitely be slower though.