I have to wonder about an architecture where he's creating thousands of these hash objects and then rarely using them. Initializing them to size 0 was a workaround, but it makes me wonder if maybe he should consider lazy evaluation where the objects are only created if they're actually used? That's still a bunch of CPU cycles burned churning through the setup/teardown of empty hash tables.