C++ 在VS中构建增强型解决方案
Boost rocks,它非常强大,但我讨厌每次在Visual Studio 7.1中构建解决方案时都使用它 这似乎对构建时间有影响(不是积极的)。我不能从我的项目中删除所有的Boost用法来比较构建时间,但我在小项目中尝试过,这种差异是有意义的 我想问题在于Boost由数千个头文件组成,这些头文件包含了大量的头文件。因此,当我在头文件中包括(比如)boost/function.hpp时,可能会导致包含数百个boost头文件 有没有人有过同样的经历?有什么办法解决吗 粗略的想法:C++ 在VS中构建增强型解决方案,c++,visual-studio,visual-c++,boost,build-process,C++,Visual Studio,Visual C++,Boost,Build Process,Boost rocks,它非常强大,但我讨厌每次在Visual Studio 7.1中构建解决方案时都使用它 这似乎对构建时间有影响(不是积极的)。我不能从我的项目中删除所有的Boost用法来比较构建时间,但我在小项目中尝试过,这种差异是有意义的 我想问题在于Boost由数千个头文件组成,这些头文件包含了大量的头文件。因此,当我在头文件中包括(比如)boost/function.hpp时,可能会导致包含数百个boost头文件 有没有人有过同样的经历?有什么办法解决吗 粗略的想法: 向预编译头添加
是的,Boost还使用了硬核模板,我想这对编译器来说相当困难,所以数千个头文件不是唯一的问题。正如您在文章中提到的,Boost代码包含大量模板代码,需要大量CPU周期来编译。与此相比,来自多个头文件的开销非常小 您需要做的第一件事是找出编译延迟的原因是哪个头文件或哪行代码。通常,导致延迟的不是头文件的包含,而是在您自己的代码中使用了它的一个类/函数。您可以通过注释掉代码片段直到编译再次变快,然后取消注释代码片段直到编译再次变慢来隔离负责的代码。然后,您可以决定是否要用其他代码替换缓慢的代码。这取决于您权衡这里的利弊,或者编译速度与漂亮的boost代码 您还可以做一些其他事情:
- 清理不必要的include语句(尤指标题中的)
- 在头文件中,将包含替换为转发声明(如果可能)
- 得到一台更快的计算机:D
#ifndef BOOST_SHARED_PTR_HPP_INCLUDED
# include <boost/shared_ptr.hpp>
#endif
\ifndef增压\u共享\u PTR\u水电站\u包括在内
#包括
#恩迪夫
避免头级联的另一种方法是使用,特别是在处理复杂类时。然后,复杂的Boost内容可以被包含并仅由该编译单元使用。缺点是接口的设计应该不需要特定于Boost的东西。然而,打破依赖关系也可能是一件好事 我也很喜欢
- 如您所说的那样使用预编译头(这会带来更多)
- 使用链接库时,请检查是否确实需要它们(链接速度也很慢)
- 检查您的防病毒软件是否进行了访问扫描,并对标题和源目录(boost和您的项目)禁用它
竖起拇指寻找防病毒提示!它们通常比病毒造成的危害更大。我以前遇到过反病毒软件。反病毒软件的优点是,但它已经被禁用用于构建目录。我们还为项目文件和输出使用单独的HDD。这很有帮助,似乎对我不起作用。我们已经使用了非常快速的计算