首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内存的最佳分配

内存的最佳分配
EN

Stack Overflow用户
提问于 2012-11-08 19:24:32
回答 2查看 103关注 0票数 0

我有200个小组。每组具有100个设备,即总共20000个设备被分成200个组,每组100个。

现在,当每个设备向服务器注册时,服务器为该设备分配一个组id。(100台设备具有相同的组id。)在稍后的阶段,服务器发送具有组id的多播数据,使得数据被接收到具有该组id的所有设备。

问题是,我需要为每个组分配一个内存块(例如25字节)来存储数据,以便该组中的所有设备都将使用该内存块进行处理。我的想法是分配一个大的块(比如25 * 200 = 5000字节),并为每个组分配一个25字节的块(grp0指向起始地址,grp1指向start+25地址,依此类推)。

这是最好的方法吗?还有其他想法吗?

EN

回答 2

Stack Overflow用户

发布于 2012-11-08 19:43:41

对于您的示例,我将使用数组。

在客户端数量不变的情况下,分配单个块是最有效的方法:

与放置god-knows-where的100个小数据块相比,

  • 数据保存在一个块中,这使得处理器缓存更容易进行缓存,从而避免了与跟踪每个内存块的列表相关的开销,而不是100个

也就是说,可能只有100个元素的差异可以忽略不计,但乘以200个组可以提高性能(这真的取决于您如何使用数据结构)

在动态结构的情况下(例如,您的客户端连接和断开,因此它们并不总是100),您应该使用链表-它在需要时分配内存(因此您最终得到100个不同的内存块)

票数 1
EN

Stack Overflow用户

发布于 2012-11-08 19:43:30

正如ArjunShankar所说的,你将花费O(1)时间来访问一个组中的设备,假设你不需要太多的处理就可以找到一个特定的设备(假设你必须找到它),这是不错的。如果您计划同时处理它们,并且数量变得很大(或者您的可用内存有限),那么您应该考虑一些技术,比如磁盘分页。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13288129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档