利用了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是最好的选择。