unordered_map,unordered_set,map,set 插入查找耗时测试

对于10^7的随机固定数列在g++4.8.1插入查找测试

通过下表使用 unorder_map时不要用insert插入

 

MAXN 10000000 (10^7)10次平均耗时单位(ms)
【插入】
unordered_set::insert(int)259
 
unordered_map[int] = int296
unordered_map .insert()3000
 
map[int] = int1601
 
set::insert(int)1703
 
【查找】
unordered_set::find(int)108
unordered_set::count(int)156
 
unordered_map::find(int)112
int=unordered_map[int]134
unordered_map::count(int)162
 
map::find(int)1414
int = map[int]1426
 
set:find(int)1425

 

【测试程序】

#include <time.h>
#include <cstdio>
#include <cstdlib>
#include <unordered_map>
#include <unordered_set>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
#define MAXN 10000000
#define MOD 1000000000
unordered_set<int> uset;
unordered_map<int, int> umap;
map<int, int> mp;
set<int> stt;
int in[MAXN];

int main()
{
	srand(0);
	long long sum = 0;
	int t = 10;
	uset.clear();
	umap.clear();
	mp.clear();
	stt.clear();
	for (int i = 0; i < MAXN; i++)
	{
		in[i] = rand() % MOD;
		//uset.insert(in[i]);
		//umap[in[i]] = i;
		//mp[in[i]] = i;
		stt.insert(in[i]);
	}
	while (t--)
	{
		long long st = clock();
		for (int i = 0; i < MAXN; i++)
		{
			//auto it = uset.find(in[i]);
			//auto it = uset.count(in[i]);

			//auto it = umap.find(in[i]);
			//auto it = umap[in[i]];
			//auto it = umap.count(in[i]);

			//auto it= mp.find(in[i]);
			//auto it= mp[in[i]];

			auto it= stt.find(in[i]);
		}
		long long ed = clock();
		sum += ed - st;
	}
	printf("%lld\n", sum / 10);
	return 0;
}


 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值