linux进程map,linux下unordered_map和map在小数据下性能差异
說起性能,沒有測試,還是沒有發言權:
#include
#include
#include
#include
#include
#include
#include
#include
#include
timeval g_ts;
long getnow(){
gettimeofday(&g_ts, NULL);
return g_ts.tv_usec;
}
int size = 10;
int getrand(){
return rand()%size;
}
int main(int agr, char** argc){
if (agr < 2){
printf("uage gar < 2\n");
exit(1);
}
size = atoi(argc[1]);
std::unordered_map map1;
long t1 = getnow();
for (int i = 0; i < size; ++i){
map1.insert(std::make_pair(getrand(),"tes"));
}
for(int i = 0; i < size; ++i){
map1.find(getrand());
}
int rand1 = getrand();
for (int i = 0; i < size; ++i){
map1.erase(getrand());
}
printf("unordered_map %d insert time:%ld\n", size, getnow()-t1);
std::map map2;
t1 = getnow();
for(int i = 0; i < size; ++i){
map2.insert(std::make_pair(getrand(), "tes"));
}
for(int i = 0; i < size; ++i){
map2.find(getrand());
}
for(int i = 0; i < size; ++i){
map2.erase(getrand());
}
printf("std::map insert&find %d times use:%ld\n", size, getnow() - t1);
}
輸出結果為:
allen@allenPC:~/code/c++code$ ./tetsb 10
unordered_map 10 insert time:44
std::map insert&find 10 times use:33
allen@allenPC:~/code/c++code$ ./tetsb 100
unordered_map 100 insert time:186
std::map insert&find 100 times use:212
allen@allenPC:~/code/c++code$ ./tetsb 200
unordered_map 200 insert time:330
std::map insert&find 200 times use:453
allen@allenPC:~/code/c++code$ ./tetsb 500
unordered_map 500 insert time:792
std::map insert&find 500 times use:1236
allen@allenPC:~/code/c++code$ ./tetsb 1000
unordered_map 1000 insert time:1552
std::map insert&find 1000 times use:2587
allen@allenPC:~/code/c++code$
看來還是如果數據量較小,unorderedmap更快!
總結
以上是生活随笔為你收集整理的linux进程map,linux下unordered_map和map在小数据下性能差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux用echo重定向到文件,Lin
- 下一篇: linux安装virtualbox命令,