Meh*_*dad 14 c++ compilation visual-studio-2008 visual-c++
如何找到代码的哪些部分需要很长时间才能编译?
我已经在为所有标题使用预编译头文件,它们肯定会提高编译速度.然而,每当我对我的C++源文件进行更改时,编译它需要很长时间(这是CPU /内存绑定,而不是 I/O绑定 - 它都是缓存的).此外,这是不相关的连接部分,只是编译部分.
我试过打开/showIncludes
,但当然,因为我使用的是预编译的头文件,所以后面没有任何内容stdafx.h
.所以我知道只有源代码需要一段时间才能编译,但我不知道它的哪一部分.
我也试过做一个最小的构建,但它没有帮助.也没有/MP
,因为它无论如何都是单个源文件.
我可以尝试通过添加/删除源代码来解析源代码并确定哪个部分是瓶颈,但这是一个痛苦而且无法扩展.此外,很难删除某些东西,仍然让代码编译 - 错误消息,如果有的话,几乎立即回来.
有没有更好的方法来弄清楚什么会减慢编译速度?
或者,如果没有办法:是否有任何语言结构(例如模板?)需要花费更长的时间来编译?
我在C++源代码中有什么:
三个(相对较大的)ATL对话框类(包括定义/逻辑).
它们很可能是原因,但无论如何它们都是程序的核心部分,所以显然每当我更改它们时都需要重新编译它们.
随机单行(或类似小)实用程序函数,例如字节数组到十六进制转换器
对我的头文件中找到的(内联)类的引用.(其中一个头文件是巨大的,但它只使用最少的模板,当然它是预编译的.另一个是TR1 regex
- 它很大,但它几乎没用过.)
我正在寻找技术,我可以更一般地应用这些问题的原因,而不是针对我的特殊情况的具体建议.希望这对其他人也更有用.
提高编译时间的两种常用方法:
只有这两条规则将大大缩短您的构建时间。
您可以在 Lakos 的《大规模 C++ 软件设计》中找到更多技巧。
对于 Visual Studio(我不确定它是否太旧),请查看以下内容:How should I detector dependent #include files in a large C++ project?