C++ :unordered_map性能测试

该博客通过C++在Release模式下,使用VS2017编译器,探讨了在8GB内存的Windows10系统中,如何利用unordered_map存储1000万个元素的性能。测试结果显示,插入操作耗时约30毫秒,遍历所有元素几乎不耗时,而查找特定元素也仅需大约0毫秒。这展示了unordered_map在大规模数据存储和查找方面的高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.环境:vs2017编译器 ->Release模式
2.系统内存:8G ,Windows10 专业版

class FirstCPPCls
{

private:
	string serviceId;
	string systemId;
	string subSystemId;
	string appVersion;
	string companyId;
	string clusterName;

public:
	FirstCPPCls(void) {}
	~FirstCPPCls(void) {}
	inline string getServiceId() { return serviceId; }
	inline string getSystemId() { return systemId; }
	inline string getSubSystemId() { return subSystemId; }
	inline string getAppVersion() { return appVersion; }
	inline string getCompanyId() { return companyId; }
	inline string getClusterName() { return clusterName; }

	inline void setServiceId(string v) { serviceId = v; }
	inline void setSystemId(string v) { systemId = v; }
	inline void setSubSystemId(string v) { subSystemId = v; }
	inline void setAppVersion(string v) { appVersion = v; }
	inline void setCompanyId(string v) { companyId = v; }
	inline void setClusterName(string v) { clusterName = v; }
};
int main(){
#if 1
	DWORD begin = GetTickCount();
	unordered_map<int, FirstCPPCls*> unordered_map_obj;
	for (int i = 0; i < 10000000; i++) {
		FirstCPPCls clz;
		clz.setAppVersion("12.32.33");
		clz.setClusterName("osm-service");
		clz.setCompanyId("239383");
		clz.setServiceId("sysL.1.223");
		clz.setSubSystemId("23");
		clz.setSystemId("32");
		unordered_map_obj.insert(make_pair(i, &clz));
		//printf("\n"); //打印真的很耗性能
	}
	std::cout << unordered_map_obj.size() << endl;
	DWORD end = GetTickCount();

	// 打印时间差
	cout << "《unordered_map》1000万条数据在栈中存储,消耗的时间:" << (end - begin) << endl;  // 平均30豪秒左右
	int find_i = 555;
	begin = GetTickCount();
	unordered_map<int, FirstCPPCls*>::iterator unordered_it;
	for (unordered_it = unordered_map_obj.begin(); unordered_it != unordered_map_obj.end(); unordered_it++)
	{
		if (unordered_it->first == find_i)
		{
			printf("找到需要元素\n");
		}
		
	}
	
	end = GetTickCount();
	cout << "《unordered_map》1000万条数据遍历,消耗的时间:" << (end - begin) << endl;  // 平均0豪秒左右

	begin = GetTickCount();
	unordered_it = unordered_map_obj.find(find_i);
	if (unordered_it != unordered_map_obj.end())
	{
		printf("找到需要元素\n");
	}
	end = GetTickCount();
	cout << "《unordered_map》1000万条中查找某个元素,消耗的时间:" << (end - begin) << endl;  // 平均0豪秒左右
#endif
	return 0;
}

3.测试结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值