Skip to content

Support lower maximum size #540

Open

Description

@overlookmotel

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.

Activity

  1. cuviper commented on Sep 5, 2024

    @cuviper
    Member

    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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions