我在玩某些缓存算法,这有点挑战性。基本上,它需要分配许多小对象(双数组,1 到 256 个元素),对象可通过映射值访问,map[key] = array
. 初始化数组的时间可能相当大,一般超过 1 万个 cpu 周期。
很多我的意思是总共大约千兆字节。可能需要根据需要弹出/推送对象,通常在随机位置,一次一个对象。对象的生命周期通常很长,几分钟或更长,但是,在程序执行期间,对象可能会多次分配/释放。
什么是避免内存碎片的好策略,同时仍然保持合理的分配释放速度?
我正在使用 C++,所以我可以使用 new 和 malloc。谢谢。
我知道网站上有一个类似的问题,Efficiently allocating many short-lived small objects,有些不同,线程安全对我来说不是直接问题。
我的开发平台是Intel Xeon,linux操作系统。理想情况下,我也想在 PPC linux 上工作,但这对我来说不是最重要的。