【发布时间】:2015-10-17 21:34:41
【问题描述】:
我有一个 C++ 程序正在插入大约。将 1800 万个数字类型 uint64_t 输入谷歌 dense_hash_set。
数字是所有小于 2^64 的偶数
N >= radical(N)^4.
插入速度比插入 1800 万个随机数或 1800 万个序列号慢一个数量级。
在执行插入时,代码似乎大部分时间都在执行语句
if ( test_empty(bucknum) )
将 1800 万个项目插入到 dense_hash_set 中是否合理?
有什么方法可以加快插入速度?
相关行是
uint64_t N;
google::dense_hash_set<uint64_t> evencandidates;
evencandidates.set_empty_key(-1);
.....
evencandidates.insert(N);
【问题讨论】:
-
也许是因为你必须检查是否 N>=radical(N)^4 ?您甚至没有提供任何代码。我们该如何回答?
-
性能不佳与检查 N>=radical(N)^4 无关(我之前使用 std::unordered_set 进行插入,这也快了一个数量级)。完整的代码很复杂,所以我没有在帖子中包含它,已经添加了相关行。
-
@Armchair:然后做一个最小的、完整的例子来演示这个问题。作为奖励,当您删除不需要证明性能不佳的部分代码时,您可能会发现问题出在其他地方!