c++ 用 vector 替代map

当数据的key数量线性可控,且有一个不重复的hash 算法来定义key。尝试用vector来替代map 测试下性能

 

#include 
#include 

#include 
#include 

int main()
{
  // std::map test;
  std::vector test(100, 0); 
  for(int i = 0;i < 100; i++) {
        test[i] = i;
  }
  struct timeval tv; 
  gettimeofday(&tv, NULL);
  int i = 0;
  long c = 0;
  while(i++ < 1000000) {
    c+=test[i % 100];
  }
  struct timeval tv2;
  gettimeofday(&tv2, NULL);
  long s = (tv2.tv_sec * 1000000 + tv2.tv_usec) - (tv.tv_sec * 1000000 + tv.tv_usec);
  std::cout << "total spend " << s << " us\n";
}

测试得知用map时 耗时约177317us

测试得知用vector时 耗时约 4423us

性能提升40倍

你可能感兴趣的:(c)