【问题标题】:Boost Bimap takes too much memory in debug buildBoost Bimap 在调试构建中占用太多内存
【发布时间】:2014-03-04 08:13:32
【问题描述】:

我正在使用相当多的表单容器

boost::bimap<boost::bimaps::multiset_of<std::string>, boost::bimaps::set_of<AnEnum> >

我将它们定义在包含在相当多的cpp文件中的头文件中(这是在我尽可能限制头文件的公开之后)。在调试版本中创建的 .a 文件运行到 1 GB 以上(导致编译由于“设备上没有空间”错误而中途停止,编译时间自然呈指数级增长。

使用的编译器是 gcc 4.8.1。只是想知道是否有人遇到过 boost::bimap 的问题以及他们为解决此问题所做的工作

【问题讨论】:

  • 你用的是c++11还是c++98?
  • 我使用的是 gcc 4.8.1。我认为它会自动使用 c++11。我错了吗?我需要配置什么吗?
  • 对我来说,不管有没有-std=c++11,它都可以工作。

标签: c++ boost out-of-memory bimap


【解决方案1】:

我很可能每次在不同的文件中使用这样的bimap,它是专门导致大量代码重复的。如果您使用的是c++11,那么您应该将它们声明为extern template,并将其专门用于一个文件。见using extern template (C++11)

【讨论】:

  • 抱歉回复晚了。由于此类地图很多,所以我花了一些时间进行更正和验证。但是是的,这种方法显着减小了尺寸。话虽如此,除非绝对必要,否则我强烈建议不要使用 boost bimap。在调试构建中,我的最终应用程序的大小为 110 MB,带 bimap 和 35 MB,没有。在发布时,它的大小为 33 vs 8。这是在我能够创建二进制文件之后,因为我使用了上述方法。
猜你喜欢
  • 2017-12-20
  • 2015-10-14
  • 2013-07-18
  • 2013-07-11
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
相关资源
最近更新 更多