Ale*_*ter 13 c++ performance build-process module header-files
我发现如果有很多类,当我每个类使用一个*.h和一个*.cpp文件时,编译时间会大大增加.我已经使用预编译头和增量链接,但编译时间仍然很长(是的,我使用boost;)
所以我想出了以下技巧:
因此,我只有8个翻译单元,而不是100多个翻译单元.编译时间缩短了4-5倍.
缺点是您必须手动包含所有*.cpp文件(但它不是真正的维护噩梦,因为如果您忘记包含链接器将提醒您的内容),并且某些VS IDE便利不适用于此方案,例如转到/转移到实施等
所以问题是,有很多cpp翻译单元真的是唯一真正的方法吗?我的伎俩是一种已知的模式,还是我错过了什么?谢谢!
这种方法的一个显着缺点是由于每个翻译单元有一个.obj文件.
如果您创建一个静态库以便在其他项目中重用,那么如果您有几个巨大的翻译单元而不是许多小翻译单元,那么您将经常在这些项目中面对更大的二进制文件,因为链接器将只包含.obj文件,其中包含真正引用的函数/变量在使用该库的项目中.
在大型翻译单元的情况下,更有可能引用每个单元并包含相应的.obj文件.在某些情况下,更大的二进制文件可能是一个问题.一些链接器也足够聪明,只能包含必要的函数/变量,而不是整个.obj文件.
此外,如果包含.obj文件并且包含所有全局变量,则在程序启动/停止时将调用它们的构造函数/析构函数,这肯定需要时间.
| 归档时间: |
|
| 查看次数: |
1080 次 |
| 最近记录: |