c++的unordered map 和map的查找效率,别找了,在这里看吧

 利用了https://quick-bench.com/q/ltY3bIBRcsiFc9TAstyCxaPw5KQ的bench

static void um_count(benchmark::State& state) {
    std::unordered_map<int,std::string> map;
    for(int i=0;i<1000;i++)
    map.emplace(i,"111111111111111111");

    for(auto _ : state){
      map.count(574);
      map.count(532);
      map.count(571);
      map.count(999);
    }

}
// Register the function as a benchmark
BENCHMARK(um_count);

static void um_find(benchmark::State& state) {
    std::unordered_map<int,std::string> map;
    for(int i=0;i<1000;i++)
    map.emplace(i,"111111111111111111");

    for(auto _ : state){
      map.find(574);
      map.find(532);
      map.find(571);
      map.find(999);
    }
}
BENCHMARK(um_find);

static void m_count(benchmark::State& state) {
    std::map<int,std::string> map;
    for(int i=0;i<1000;i++)
    map.emplace(i,"111111111111111111");

    for(auto _ : state){
      map.count(574);
      map.count(532);
      map.count(571);
      map.count(999);
    }

}
// Register the function as a benchmark
BENCHMARK(m_count);

static void m_find(benchmark::State& state) {
    std::map<int,std::string> map;
    for(int i=0;i<1000;i++)
    map.emplace(i,"111111111111111111");

    for(auto _ : state){
      map.find(574);
      map.find(532);
      map.find(571);
      map.find(999);
    }
}
BENCHMARK(m_find);

可以很明显的看到如果你只想确定一个元素是否在集合中,用um是最好的选择。

猜你喜欢

转载自blog.csdn.net/dyyzlzc/article/details/111697773
今日推荐