当前位置:  开发笔记 > 编程语言 > 正文

你有没有通过使用boost :: pool获得显着的加速?

如何解决《你有没有通过使用boost::pool获得显着的加速?》经验,为你挑选了3个好方法。

我曾经在boost :: pool中玩了几次,在我看来我正在用很多对象"churn"认真地敲打堆.通常我已经使用过boost::object_pool,或者boost::pool_alloc作为STL模板参数.然而,结果总是表明性能几乎没有变化,或者显着恶化.

我很想知道它有任何成功的故事.

我应该在分析输出中寻找什么样的东西,这可能表明boost :: pool可能会有所帮助?

实际上很难改进好的旧malloc吗?



1> Hippiehunter..:

内存池对于事务样式处理是最有效的imo,您可以在其中分配到池,然后在事务完成时,将其转储为遗忘.真正的加速并不是每个分配都会快得多,因为在极长的运行应用程序中,你将几乎没有内存碎片.

在排序中,听起来您的应用程序不保证使用内存池



2> 小智..:

是的,速度提高了500%.应用程序(相当愚蠢,但有时你必须使用你所得到的)将1 std :: map中的元素复制到循环中的另一个(在循环中有一些决策),以及在多线程/进程服务器上产生的分配导致堆争用.我在第二张地图上添加了boost池作为分配器,结果是应用程序执行速度提高了500%.



3> Gaetano Mend..:

盲目优化并不好.尝试使用谷歌内存分配器,你甚至不需要重新编译你的应用程序.你可以在这里找到你需要知道的东西:

http://google-perftools.googlecode.com/svn/trunk/doc/tcmalloc.html

加埃塔诺

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有