c++ 用 vector 替代map

本文通过实验比较了在特定条件下,使用vector与map在C++中的性能差异。结果显示,在数据的key数量线性可控且有不重复hash算法定义key的情况下,vector的性能远优于map,性能提升可达40倍。

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

 

#include <sys/time.h>
#include <iostream>

#include <map>
#include <vector>

int main()
{
  // std::map<int, int> test;
  std::vector<int> 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倍

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值