首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么使用Boost池ordered_free()而不是free()?

为什么使用Boost池ordered_free()而不是free()?
EN

Stack Overflow用户
提问于 2012-08-29 01:32:54
回答 1查看 614关注 0票数 0

在使用Boost池时,为什么要选择使用ordered_free()而不是free()?假设ordered_free()总是O(n),而free()应该是O(1)。有没有减少碎片化的好处?我的用例是在高性能服务器中使用Boost池,该服务器将全天运行,全天都有大量的分配和释放。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-29 01:43:51

The documentation回答了这个问题:

有序池按照每个空闲块的地址顺序维护它的空闲表-如果您可能要分配对象数组,这是最有效的方法。然而,在当前空闲块的数量中,释放对象的数量可以是O(N),在某些情况下,这可能是非常昂贵的。

无序池不会以任何特定顺序维护其空闲列表,因此分配和释放单个对象的速度非常快,但分配数组可能会很慢(尤其是池可能不知道它包含足够的空闲内存用于分配请求,并且不必要地分配更多内存)。

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

https://stackoverflow.com/questions/12164521

复制
相关文章

相似问题

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