我有200个小组。每组有100个设备,即总共20000个设备分为200组,每组100个。
现在,当每台设备都注册到服务器时,服务器会为设备分配一个组ID。 (100个设备具有相同的组ID。)在稍后阶段,服务器发送具有组ID的组播数据,以便将数据接收到具有该组ID的所有设备。
问题是我需要为每个组分配一块内存(比方说25字节)来存储数据,以便该组中的所有设备都将使用该块进行处理。我的想法是分配一个大块(比如25 * 200 = 5000字节)并为每个组分配一个25字节的块(grp0指向起始地址,grp1指向开始+25地址,依此类推)。
这是最好的方法吗?还有其他想法吗?
答案 0 :(得分:1)
对于您的示例,我将使用数组。
如果您的客户端数量没有变化,分配单个块是最有效的方式:
说,可能只有100个元素的差异可以忽略不计,但乘以200组可以给你一个性能提升(实际上取决于你如何使用数据结构)
如果是动态结构(例如,您的客户端连接和断开连接,因此它们并不总是100),您应该使用链接列表 - 在需要时分配内存(因此最终会有100个不同的内存块)
答案 1 :(得分:0)
如ArjunShankar所述,您将花费O(1)时间来访问组内的设备,这并不错,假设您不必处理太多而无法找到特定设备(假设您必须找到它) 。如果您计划同时处理它们并且数量变大(或者您的可用内存有限),您应该看一些技术,例如磁盘分页。