我有一个包含大约一百万个条目的哈希图,键是一个字符串,其值来自5个不同的输入。 (字符串串联)每个输入的域很小,但是5个输入的组合给出了巨大的映射(500K个项)。现在,我正在考虑优化此结构。
我的想法是通过对每个单独的输入进行哈希并将该5个哈希组合为一个哈希(int 32或64)来哈希输入(5个输入的组合),然后查找该哈希。
我的问题是,是否存在可以很好地处理这种情况的已知数据结构?并值得进行优化吗?我想同时优化内存和运行时。
我正在使用C++
和std::unordered_map
,关键是5个输入的组合字符串,输出是随机的。我没有发现输入和输出之间的任何关系(随机或串行)。
125 458 699 sadsadasd 5 => 56.
125 458 699 sadsadasd 3 => 57.
125 458 699 sadsadasd 4 => 58.
125 458 699 sadsadasd 5 => 25.
125 458 699 gsdfsds 3 => 89.
每个输入的域很小(第四个输入具有2K个不同的值,而其他输入只能具有约20个不同的值)。
最佳答案
您可以使用GNU perf为您的密钥生成完美的哈希函数。
关于c++ - HashMap实现优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23616351/