我正在编写一个使用boost::accumulators和Eigen线性代数库的模板算法。
进行编译时,Visual Studio编译器(cl.exe),内存消耗超过2.5GB RAM达到峰值,而我的PC(Windows 7 32位,具有3GB虚拟地址空间)变得无响应(相当长的时间:〜1分钟) 。这些编译单元的二进制文件(.obj)为10-20MB。

我的问题(不针对这些特定的库)

  • 这是大量使用模板的代码的正常行为吗?
  • 是否可以采取一些措施来减少内存需求,并且
    编译时间?
  • 如果没有很好的解决方案,为什么不这样做
    由设计编程语言的人解决?的
    了解C++的人越多,他们使用模板,生成难以编译的代码以及膨胀的二进制文件的可能性就越大。
  • 最佳答案



    因为没有好的解决方案,所以请停下来。

    您正在谈论的问题与C++无关。这是C-旧的“翻译单位”的 Artifactory 。要解决此问题,将需要重新执行编译模型。 C++委员会多年来一直在努力做到这一点,而又不破坏现有C++的每一行(这是一个更大的考虑因素),但这不是一个小问题。修复它需要进行很大的更改。

    同样,Clang具有更好的性能,配备可变参数模板的GCC的新版本也可以实现。

    关于c++ - 模板库的编译器内存消耗(boost + Eigen),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11282305/

    10-11 22:43
    查看更多