std::map::find vs std::map::at
unknown
c_cpp
a year ago
1.6 kB
21
Indexable
#include <vector>
#include <iostream>
#include <chrono>
#include <map>
void find(const std::map<int, int>& map) {
const auto& it = map.find(0);
}
void at(const std::map<int, int>& map) {
try {
map.at(0);
} catch (std::out_of_range) {}
}
void runTestCase(const std::map<int, int>& map) {
const uint32_t retries = 1000000;
// Test case 1: std::map::find
{
auto start = std::chrono::high_resolution_clock::now();
for (int i = 0; i < retries; i++) {
find(map);
}
auto seconds = std::chrono::duration<double>(std::chrono::high_resolution_clock::now() - start).count();
std::cout << "std::map::find with [" << retries << "] attempts: " << seconds << " seconds" << std::endl;
}
// Test case 2: std::map::at
{
auto start = std::chrono::high_resolution_clock::now();
for (int i = 0; i < retries; i++) {
at(map);
}
auto seconds = std::chrono::duration<double>(std::chrono::high_resolution_clock::now() - start).count();
std::cout << "std::map::at with [" << retries << "] attempts: " << seconds << " seconds" << std::endl;
}
}
int main(int argc, char* argv[]) {
std::map<int, int> map;
// Run test for empty map
std::cout << "Test case for empty map" << std::endl;
runTestCase(map);
std::cout << std::endl;
map[0] = 1;
map[1] = 12;
map[7] = 42;
// Run test for map with data
std::cout << "Test case for map with data" << std::endl;
runTestCase(map);
std::cout << std::endl;
std::cout << "Test is finished" << std::endl;
return 0;
}Editor is loading...
Leave a Comment