相关疑难解决方法(0)

gcc std :: unordered_map的执行速度慢吗?如果是这样 - 为什么?

我们正在用C++开发一个高性能的关键软件.我们需要一个并发的哈希映射并实现一个.所以我们写了一个基准来弄清楚我们的并发哈希映射与之比较慢多少std::unordered_map.

但是,std::unordered_map似乎是非常慢......所以这是我们的微基准测试(对于并发映射,我们产生了一个新的线程,以确保锁定不会被优化掉,并注意我从来没有inser 0因为我也基准测试google::dense_hash_map,需要一个空值):

boost::random::mt19937 rng;
boost::random::uniform_int_distribution<> dist(std::numeric_limits<uint64_t>::min(), std::numeric_limits<uint64_t>::max());
std::vector<uint64_t> vec(SIZE);
for (int i = 0; i < SIZE; ++i) {
    uint64_t val = 0;
    while (val == 0) {
        val = dist(rng);
    }
    vec[i] = val;
}
std::unordered_map<int, long double> map;
auto begin = std::chrono::high_resolution_clock::now();
for (int i = 0; i < SIZE; ++i) {
    map[vec[i]] = 0.0;
}
auto end = std::chrono::high_resolution_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin);
std::cout << "inserts: " << …
Run Code Online (Sandbox Code Playgroud)

c++ stl hashmap concurrenthashmap c++11

100
推荐指数
2
解决办法
3万
查看次数

矢量或地图,哪一个使用?

我听过很多人说如果容器中预期的元素数量相对较小,最好使用std::vector而不是std::mapeventHough我只使用容器进行查找而不是迭代.

这背后的真正原因是什么?

显然,map的查找性能不会比矢量的查找性能差(尽管可能是纳秒/微秒),那么它与内存使用情况有关吗?

在虚拟地址空间的分段中,矢量是否比映射更好/更差?

我正在使用随Visual Studio一起提供的STL库(即微软实现)与其他实现有什么不同?

c++ performance stl

63
推荐指数
4
解决办法
7万
查看次数

标签 统计

c++ ×2

stl ×2

c++11 ×1

concurrenthashmap ×1

hashmap ×1

performance ×1