如何查找哪些代码部分需要花费很长时间进行编译?
我已经对所有 header 使用了预编译的 header ,它们肯定会提高编译速度。不过,每当我对C++源文件进行更改时,编译都将花费很长时间(这是受CPU/内存限制的,而不是受I/O限制的-它们都已缓存)。此外,这与链接部分无关,而与编译部分无关。
我尝试打开/showIncludes
,但是当然,由于我使用的是预编译的 header ,因此stdafx.h
之后没有包含任何内容。因此,我知道只是源代码需要一段时间才能编译,但是我不知道它的哪一部分。
我也尝试过进行最小化构建,但这无济于事。 /MP
也不会,因为它还是单个源文件。
我可以尝试剖析源代码,并通过添加/删除来弄清哪一部分是瓶颈,但这很麻烦,而且无法扩展。此外,很难删除某些内容并仍然让代码编译-错误消息(如果有的话)几乎立即返回。
是否有更好的方法来找出导致编译速度变慢的原因?
或者,如果没有办法:是否有任何语言结构(例如模板?)需要花费更多的时间来编译?
我在C++源代码中拥有的东西:
它们很可能是原因,但无论如何它们都是程序的核心部分,因此很明显,每当我更改它们时都需要重新编译它们。
regex
-很大,但是很少使用。)注意:
我正在寻找技术,我可以将其更广泛地应用于找出这些问题的原因,而不是针对我的特殊情况的具体建议。希望这对其他人也有用。
最佳答案
缩短编译时间的两种一般方法:
只有这两个规则才能大大缩短构建时间。
您可以在Lakos的“大型C++软件设计”中找到更多技巧。
对于Visual Studio(我不确定它是否太旧),请查看以下内容:How should I detect unnecessary #include files in a large C++ project?
关于c++ - 如何找到编译瓶颈?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8107004/