Benchmark: timing 55000 iterations of FacedDieObjNotStored, FacedDieObjStored, FacelessDieObj, PsuedoHashObj, pureDieObj, pureSub, purists... FacedDieObjNotStored: 6 wallclock secs ( 6.14 usr + 0.00 sys = 6.14 CPU) @ 8957.65/s (n=55000) FacedDieObjStored: 7 wallclock secs ( 6.52 usr + 0.00 sys = 6.52 CPU) @ 8435.58/s (n=55000) FacelessDieObj: 5 wallclock secs ( 5.58 usr + 0.00 sys = 5.58 CPU) @ 9856.63/s (n=55000) PsuedoHashObj: 16 wallclock secs (15.08 usr + 0.00 sys = 15.08 CPU) @ 3647.21/s (n=55000) pureDieObj: 5 wallclock secs ( 5.26 usr + 0.00 sys = 5.26 CPU) @ 10456.27/s (n=55000) pureSub: 2 wallclock secs ( 1.09 usr + 0.00 sys = 1.09 CPU) @ 50458.72/s (n=55000) purists: 1 wallclock secs ( 0.55 usr + 0.00 sys = 0.55 CPU) @ 100000.00/s (n=55000) Rate PsuedoHashObj FacedDieObjStored FacedDieObjNotStored FacelessDieObj pureDieObj pureSub purists PsuedoHashObj 3647/s -- -57% -59% -63% -65% -93% -96% FacedDieObjStored 8436/s 131% -- -6% -14% -19% -83% -92% FacedDieObjNotStored 8958/s 146% 6% -- -9% -14% -82% -91% FacelessDieObj 9857/s 170% 17% 10% -- -6% -80% -90% pureDieObj 10456/s 187% 24% 17% 6% -- -79% -90% pureSub 50459/s 1283% 498% 463% 412% 383% -- -50% purists 100000/s 2642% 1085% 1016% 915% 856% 98% --