unorderMap基准性能
插入和删除基本都是0.1us
测试10w条数据
// // // unordered_map::emplace #include <iostream> #include <string> #include <unordered_map> #include "sys/time.h" #include <unistd.h> #define MIN(A, B) ((B) < (A) ? (B) : (A)) #define MAX(A, B) ((B) > (A) ? (B) : (A)) typedef unsigned long long uint64; uint64 us_clock_now(){ struct timeval st; gettimeofday(&st, NULL); return st.tv_sec * 1000 * 1000 + st.tv_usec; } #define max_num 100000 class Position{ }; int main () { std::unordered_map<void*, int> mymap; Position *test[max_num]; for (int i=0;i<max_num;i++){ Position* now = new Position(); test[i] = now; } uint64 begin = us_clock_now(); for(int i=0;i<max_num;i++){ mymap.emplace(test[i], i); // mymap.insert(pair<void*,int>(test[i], i)); } uint64 end = us_clock_now(); for(int i=0;i<max_num;i++){ if (mymap.find(test[i]) == mymap.end()){ printf("error\n"); } mymap.erase(test[i]); } uint64 end2 = us_clock_now(); printf("insert_time=%llu, erase_time=%llu\n", end-begin, end2-end); std::cout << std::endl; return 0; }