【问题标题】:Small objects allocator小对象分配器
【发布时间】:2011-02-28 09:23:41
【问题描述】:

有人在大型项目中使用过 Andrei Alexandrescu 的 Modern C++ Design 中的 SmallObjectAllocator 吗?我想实现这个分配器,但在我的项目中使用它之前我需要一些关于它的意见。我做了一些测试,看起来速度很快,但是测试是在一个小的测试环境中进行的。我想知道当有很多小对象(如事件、智能指针等)时它有多快以及它使用了多少额外内存。

【问题讨论】:

  • 我认为这本书几乎可以回答您的大部分问题。您可以从源代码轻松计算内存开销。构建大型测试,配置文件。
  • 我认为听书的作者的话是明智的。 Rich Sposato 的页面richsposato.com/software.html

标签: c++ memory-management dynamic-memory-allocation


【解决方案1】:

您考虑过使用Boost Pool Library 吗?

【讨论】:

  • 为什么选择 Felics?升压不疼
  • @Felics:您是否患有此处未发明综合症?请记住,最好的代码是您永远不必编写的代码。
  • 如果我使用一本书中的代码,很明显它不是“这里”发明的,但是我们总是在使用其他库的代码时遇到一些问题,并且很难调试/跟踪它没有人对该代码一无所知。任何图书馆或多或少都有错误。我从事过一个非常大的项目,该项目使用了 xpdf、libtiff、libpng、libjpeg、zlib、freetype 和其他开源项目(其中许多是 PDF 编辑器),当客户报告错误并且错误来自图书馆很难解决它们。还有一个问题就是很多开源库都不是商用的
  • Boost 库是一个例外:提供商业支持,并且可以免费用于商业用途。当然,它可能还有 bug,但考虑到它的广泛使用,我 100% 肯定它的 bug 比你的内部代码少。
  • 我同意 Felics 的观点。如果代码比较小,最好自己写:你知道你做了什么,你可以自己扩展它,也许你甚至在做的时候学到了一些东西。特别是对于 Boost,我对 Boost 有一些不好的体验。仅使用相当简单的 DateTime 类导致我的编译速度减慢了 3 倍!仅仅因为 Boost 似乎用模板做所有事情(使得转发声明类型变得非常困难)
【解决方案2】:

我建议你问Rich Sposato。他在 Loki 的小型对象分配器方面做了大量工作,包括测试和基准测试。

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多