使用模板库编译器内存消耗(boost + Eigen)

kil*_*gre 1 c++ templates boost visual-studio eigen

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

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

  1. 对于大量使用模板的代码,这是正常行为吗?
  2. 有没有什么可以减少内存需求和编译时间?
  3. 如果问题没有很好的解决方案,为什么设计编程语言的人不会解决这个问题?人们越了解C++,他们就越可能使用模板,并生成难以编译的代码和膨胀的二进制文件.

Pup*_*ppy 5

如果问题没有很好的解决方案,为什么设计编程语言的人不会解决这个问题?

因为没有好的解决方案,完全停止.

你所谈论的问题与C++无关.这是C-旧的"翻译单位"的人工制品.解决此问题需要重新编译模型.多年来,C++委员会一直试图在不破坏现有C++的每一行(这是一个更大的考虑因素)的情况下实现这一目标,但这不是一个微不足道的问题.修复它需要进行大量更改.

此外,锵有办法更好的性能,以及GCC的新版本,其是可变参数模板装备可以做的一样好.