Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support lower maximum size #540

Open
overlookmotel opened this issue Jul 14, 2024 · 1 comment
Open

Support lower maximum size #540

overlookmotel opened this issue Jul 14, 2024 · 1 comment

Comments

@overlookmotel
Copy link
Contributor

overlookmotel commented Jul 14, 2024

HashMap, HashSet and HashTable are currently all 32 bytes.

Would you consider supporting a lower maximum size? For many use cases, a size limit of ~4 billion items is sufficient, so using u32 for items, bucket_mask and growth_left would suffice. This would reduce the size of the types to 24 bytes.

This may not seem a significant gain, but when using a great number of HashMaps, with a large proportion of them empty and unallocated, the overhead adds up to a significant % of total memory usage.

This could be implemented either as a feature or generic.

If you'd be willing to accept a PR for this, I'd be happy to work one up.

@cuviper
Copy link
Member

cuviper commented Sep 5, 2024

As a user, you can also add indirection like Option<Box<HashMap<...>>> so it's only a pointer-sized None when empty. That's more of a hassle to actually use, of course, but you could hide that in a wrapper for your specific use-cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants