我有200个小组。每组具有100个设备,即总共20000个设备被分成200个组,每组100个。
现在,当每个设备向服务器注册时,服务器为该设备分配一个组id。(100台设备具有相同的组id。)在稍后的阶段,服务器发送具有组id的多播数据,使得数据被接收到具有该组id的所有设备。
问题是,我需要为每个组分配一个内存块(例如25字节)来存储数据,以便该组中的所有设备都将使用该内存块进行处理。我的想法是分配一个大的块(比如25 * 200 = 5000字节),并为每个组分配一个25字节的块(grp0指向起始地址,grp1指向start+25地址,依此类推)。
这是最好的方法吗?还有其他想法吗?
发布于 2012-11-08 19:43:41
对于您的示例,我将使用数组。
在客户端数量不变的情况下,分配单个块是最有效的方法:
与放置god-knows-where的100个小数据块相比,
也就是说,可能只有100个元素的差异可以忽略不计,但乘以200个组可以提高性能(这真的取决于您如何使用数据结构)
在动态结构的情况下(例如,您的客户端连接和断开,因此它们并不总是100),您应该使用链表-它在需要时分配内存(因此您最终得到100个不同的内存块)
发布于 2012-11-08 19:43:30
正如ArjunShankar所说的,你将花费O(1)时间来访问一个组中的设备,假设你不需要太多的处理就可以找到一个特定的设备(假设你必须找到它),这是不错的。如果您计划同时处理它们,并且数量变得很大(或者您的可用内存有限),那么您应该考虑一些技术,比如磁盘分页。
https://stackoverflow.com/questions/13288129
复制相似问题