您如何减少编译时间以及Visual C ++项目(本机C ++)的链接时间?

您如何减少编译时间以及VC ++项目(本机C ++)的链接时间?

请指定每个建议是否适用于调试,发布或两者。


这听起来很明显,但我们尽可能地使用前向声明,即使它需要写出类型为/的长名称空间名称:

// Forward declaration stuff
namespace plotter { namespace logic { class Plotter; } }

// Real stuff
namespace plotter {
    namespace samples {
        class Window {
            logic::Plotter * mPlotter;
            // ...
        };
    }
}

这大大减少了编译其他编译器的时间。 确实它适用于所有配置:)


使用Handle / Body模式(有时也称为“pimpl”,“适配器”,“装饰器”,“桥”或“包装器”)。 通过将你的类的实现隔离到你的.cpp文件中,它们只需要编译一次。 大多数更改不需要更改头文件,因此它意味着您可以进行相当大的更改,而只需要重新编译一个文件。 由于编译时间减少,这也鼓励重构和编写注释和单元测试。 此外,您可以自动分离接口和实现的关注点,以便简化代码的界面。


如果您的构建过程中必须包含大部分.cpp文件中包含的大型复杂头文件,而且这些头文件不会经常更改,则可以对其进行预编译。 在具有典型配置的Visual C ++项目中,这只是将它们包含在stdafx.h中的问题。 这个特性有它的诋毁者,但充分利用模板的库往往在头文件中有很多东西,预编译头文件是在这种情况下加速构建的最简单方法。

链接地址: http://www.djcxy.com/p/85409.html

上一篇: How do YOU reduce compile time, and linking time for Visual C++ projects (native C++)?

下一篇: C++ programming style