结论:数值类型键值比字符串快了9倍。
代码:
#include <iostream>
#include <functional>
#include <thread>
#include <array>
#include <unordered_map>
#include <map>
#include <assert.h>
#include <string>
using namespace std;
map<std::string, int> map1;
map<int, int> map2;
int main(void)
{
int num = 10000;
int loop = 100000;
for (int i = 0; i < num; ++i)
{
map1[to_string(i + 100000)] = i;
map2[i + 100000] = i;
}
int begin = clock();
for (int i = 0; i < loop; ++i)
{
map1["123123"];
}
cout << clock() - begin << endl;
begin = clock();
for (int i = 0; i < loop; ++i)
{
map2[123];
}
cout << clock() - begin << endl;
begin = clock();
for (int i = 0; i < loop; ++i)
{
}
cout << clock() - begin << endl;
begin = clock();
return 0;
}
输出结果:
937
101
0