我正在编写一个使用 boost::accumulators 和 Eigen 线性代数库的模板算法。编译时,Visual Studio 编译器 (cl.exe),内存消耗峰值超过 2.5GB 的 RAM,我的 PC(Windows 7 32 位,3GB 虚拟地址空间)变得无响应(很长一段时间:~1 分钟) . 这些编译单元的二进制文件 (.obj) 为 10-20MB。
我的问题(不针对这些特定库)
- 这是大量使用模板的代码的正常行为吗?
- 有什么办法可以减少内存需求和编译时间?
- 如果问题没有好的解决方案,为什么设计编程语言的人不解决这个问题?了解 C++ 的人越多,他们就越可能使用模板,并生成难以编译的代码和臃肿的二进制文件。