Performance of C++ Google dense_hash_set inserts

Performance of C++ Google dense_hash_set inserts

本文关键字:hash inserts set dense of C++ Google Performance      更新时间:2023-10-16

我有一个c++程序,插入近似。在谷歌dense_hash_set中输入1800万个uint64_t

这些数是小于2^64的所有具有

属性的偶数
N >= radical(N)^4.

插入速度要比插入1800万个随机数或1800万个序号慢一个数量级。

当执行插入时,代码似乎将大部分时间用于执行语句

if ( test_empty(bucknum) )

dense_hash_set中插入1800万项是否合理?

有没有办法加快插入的速度?

相关行

uint64_t N;
google::dense_hash_set<uint64_t> evencandidates;
evencandidates.set_empty_key(-1);
.....
evencandidates.insert(N);

将默认哈希函数替换为std::tr1::hash解决。密集散列集的声明变成:

google::dense_hash_set<uint64_t, std::tr1::hash<uint64_t> > evencandidates;

选择要存储的数字的标准,

N >= radical(N)^4 and N even

导致被存储的数字有很多公因数,特别是大多数数字有几个2的幂。选择一个可以很好地处理这组数字的哈希函数可以解决性能问题。