想要为我们的产品探索一些内存管理器 - 像loki中的boost,小对象分配器和我们公司内部可用的一个内存管理器。
在为我们的产品选择一个产品之前,我们希望通过小型原型应用程序探索所有选项,这些应用程序在功能方面不一定与我们的应用程序类似。我的目标是分析性能和峰值VM的相同数量的分配和各种大小的对象的释放 - 连续和非连续。它应该与std容器或boost库一起使用。
知道如何进行这样的原型应用吗?我们的申请不是MT - 但将来我们有计划。任何建议都会有很大的帮助。在对象分配方面称为随机性,就像真正的应用程序一样,会很棒。
另外,建议在公共领域提供其他一些内存管理器会有很大的帮助。我们主要在Linux 32b和64b上。
答案 0 :(得分:1)
这是一个奇怪的问题。如果您尝试使用CRT中内置的问题解决一个非常具体的问题,您应该只考虑自定义内存分配器。哪个应提供立即测试此备用分配器的方法:看看它是否解决了这个问题。
如果你只是这样做,因为它“听起来像个好主意”,那就不要了。事实并非如此。内置于CRT中的内容已经过大量优化。
答案 1 :(得分:0)
我们在2小时内向我们的系统添加了一个基于boost的小型对象分配器。只要您可以访问自己的malloc / new东西,它就变得非常简单。然后,您可以衡量自己的项目。
如果失败了,请分析您的应用程序内存使用量 - 比如让它打印出/将所有内存分配记录到文件中几分钟或一个大小,然后获取该日志并创建一个新的应用程序,只执行这些分配和释放(使用和不使用小对象分配器) - 并且可能在alloc之间计算素数或其他内容以模拟缓存未命中。