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

被折叠的 条评论
为什么被折叠?



