【问题标题】:Use a custom allocator with boost::bimap使用带有 boost::bimap 的自定义分配器
【发布时间】:2011-11-21 22:54:57
【问题描述】:

我正在努力提高同时使用 Boost Graph Library 和 boost::bimap 的程序的性能。分析表明,大部分时间都花在了内存分配和释放上。使图形库的adjacency_list 类使用boost::fast_pool_allocator 显着提高了性能。大部分剩余内存分配发生在boost::bimap 中,所以我也想尝试在那里使用自定义分配器。 documentation 说您可以将分配器指定为 bimap 的最后一个模板参数,但它没有说明分配器本身的模板参数应该是什么类型。例如,对于 XY 类型,在

boost::bimap<set_of<X>, set_of<Y>, boost::fast_pool_allocator<Z> >

Z应该填写什么?

【问题讨论】:

  • 我强烈建议不要使用 boost:bimap。直接使用带有两个索引的 boost 多索引容器比使用 bimap 的代码要清晰得多。
  • @Autopulated:谢谢 - 下次我会考虑替代方案,否则我会尝试使用 bimap。

标签: c++ boost memory-pool bimap


【解决方案1】:

我相信答案是Z,你应该填写std::pair&lt;X,Y&gt;。这对我来说很有效,但我想在这里发帖是因为

  • 从文档中看不出来
  • Boost 代码读起来不快
  • 谷歌搜索没有帮助
  • 其他人可能有有用的 cmets(例如,我没有测试这是否取决于 bimap 的左视图或右视图)

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2019-01-16
    相关资源
    最近更新 更多