Performance of C++ Google dense_hash_set inserts
Performance of C++ Google dense_hash_set inserts
我有一个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的幂。选择一个可以很好地处理这组数字的哈希函数可以解决性能问题。
相关文章:
- 什么是"#include <boost/functional/hash.hpp> "?
- 对自定义类使用 std::hash<uint64_t>
- std::hash<std::string> 可以为不同的字符串返回相同的值吗?
- C++std::hash实现总是确定性的吗
- std::hash for std::chrono::duration
- Hash for a std::pair, for use in an unordered_map
- 为什么在这种特殊情况下不需要将 std::hash() 的专用化注入到 std 命名空间中?
- 为什么当我在MD5 Hash中转换相同的C 字符串时,每次都会获得不同的输出
- 在使用 JNI 将 c++ unordered_map转换为 java hashMap之前将其转换为 java hash
- "The C++ Library doesen't provide a hash for this type." - 在 std::unordered_map 中使用自己的类
- Qt/C++ hash of hashes
- 为什么不区分大小写适用于 std::unordered_set的 std::hash 函数?
- 错误:未使用不完整的类型'struct std::hash<>'无效
- 用于unordered_set<BSTR>的 Hash & EqualTo 函数
- 无法专门化 std::hash 以unordered_map存储自定义类型
- 为模板类嵌套类定义 std::hash 时出现编译错误
- Return value of std::hash ofr (x86/x64)
- Xcode C++ MD5 hash
- 明确的专业化;'std::hash<_Kty>' 已被实例化
- STD :: HASH :: operator() - 例外保证