如何改进Visual C ++编译时间?
我在每次提交时在buildbot中编译2个C ++项目。两者都是大约1000个文件,一个是100 kloc,另一个是170 kloc。编译时间与gcc(4.4)到Visual C ++(2008)有很大不同。
一个项目的Visual C ++编译需要20分钟。他们无法利用多核,因为项目依赖于另一个。最后,在Debug和Release中对32和64位的两个项目进行完整的编译需要超过2 1/2小时。
一个项目的gcc汇编需要4分钟。它可以在4个核心上并行化,大约需要1分10秒。 2个项目的4个版本(Debug / Release,32/64位)的所有8个版本都在不到10分钟的时间内编译完成。
Visual C ++编译时发生了什么?它们基本上慢了5倍。
编译C ++ kloc的平均时间是多少?我的是vs ++的7 s / kloc和gcc的1.4 s / kloc。
可以做任何事情来加快Visual C ++上的编译时间吗?
没有找到相关结果
已邀请:
12 个回复
可扇胆
值类型的具体实例。您可能会看到类型为
或GUID的常量会发生这种情况。它会影响编译和链接时间。 对于单个dll,这导致10倍的减速。如果将它们放在预编译的头文件中,或者只是在头文件中声明它们并在cpp文件中初始化它们会有所帮助。 请查看病毒扫描程序,并确保尝试使用预编译的头文件,如果没有它,您将无法看到VC ++的最佳状态。 哦,是的,并确保%TMP%文件夹与编写构建的位置在同一分区上,因为VC ++会生成临时文件并在以后移动它们。
闲窍
期差骇蓟
寒健
或者你有一个类似于我认为你用于gcc的makefile。我假设两个版本都使用类似的makefile,但我认为值得检查。 您是否为任一编译器使用预编译头文件?如果您没有为VS使用预编译头,那么您可能希望切换到使用它们。我个人建议使用
方法而不是单个全包头文件但是如果你当前没有使用预编译头文件并且想要尝试一个强制包含的单个全包头文件(使用
编译器命令行) switch)可以快速测试,无需更改任何代码。 我在这里写了关于
和
的文章:http://www.lenholgate.com/blog/2004/07/fi-stlport-precompiled-headers-warning-level-4-and-pragma-hdrstop.html
久坡
械怒等
穗揣
可扇胆
苏髓骗撩
诫商
青董据零
稼悸