⑴ 一个C++工程中,许多个文件都include某一个类,当该类更新时,编译速度太慢,怎么办
这是个好问题,虽然老生常谈,但真正知道解决方案的人很少。《EffectiveC++》有介绍,同时推荐这本书给所有C++er。
一个组织有问题的大型项目中,影响编译速度的最大问题就是头文件形成庞大的依赖网络,其中一个头文件修改就导致一大堆间接依赖的源代码文件需要重新编译。a.h包含b.h,b.h包含c.h,c.h又包含d.h,即使a.h和d.h似乎没什么关系,修改d.h的时候还是无可避免a.cc被重新编译。
首先得知道C++一个特性,函数分为声明和实现两部分是人所皆知,但类也可以分为前置声明和定义可能知道的人就比较少了,知道能怎么用就更少了,其实就是可以用来解决编译速度问题的。
⑵ 如何加快C++代码的编译速度
最重要的一个原因应该是C++基本的"头文件-源文件"的编译模型:
每个源文件作为一个编译单元,可能会包含上百甚至上千个头文件,而在每一个编译单元,这些头文件都会被从硬盘读进来一遍,然后被解析一遍。
每个编译单元都会产生一个obj文件,然后所以这些obj文件会被link到一起,并且这个过程很难并行。
这里,问题在于无数头文件的重复load与解析,以及密集的磁盘操作。
⑶ Xcode编译慢打包慢解决方法
1. 提高 XCode 编译时使用的线程数
defaults write com.apple.Xcode 48 cpu 占用会特别高 达到150%的样子,15寸 设置48比较好,否则操作其他因员工可能会卡
XCode 默认使用与 CPU 核数相同的线程来进行编译,但由于编译过程中的 IO 操作往往比 CPU 运算要多,因此适当的提升线程数可以在一定程度上加快编译速度。本人采用的是 4 核的 CPU ,将线程数改为 8 后编译速度略有提升。
2. 将 Debug Information Format 改为 DWARF
在工程对应Target的Build Settings中,找到Debug Information Format这一项,将Debug时的DWARF with dSYM file改为DWARF。
这一项设置的是是否将调试信息加入到可执行文件中,改为DWARF后,如果程序崩溃,将无法输出崩溃位置对应的函数堆栈,但由于Debug模式下可以在XCode中查看调试信息,所以改为DWARF影响并不大。这一项更改完之后,可以大幅提升编译速度。
// 这一条暂时不用管,默认配置
3. 将 Build Active Architecture Only 改为 Yes
在工程对应Target的Build Settings中,找到Build Active Architecture Only这一项,将Debug时的No改为Yes。
这一项设置的是是否仅编译当前架构的版本,如果为No,会编译所有架构的版本。需要注意的是,此选项在Release模式下必须为Yes,否则发布的ipa在部分设备上将不能运行。这一项更改完之后,可以显着提高编译速度。
在设置完以上三个项之后,相信编译时间会缩短很多。
4. 如何关掉 CCache 提高编译打包速度呢编写脚本,文件名称ccache
放到Xcode项目根目录,然后
详情见这篇帖子
https://www.jianshu.com/p/c9e3fb3dfa53
5. 去掉打包缓存
~/Library/Developer/Xcode/Procts
⑷ 如何提高Delphi7的编译速度
提高 delphi 的编译速度,最有效的方法是提高计算机的性能(更高的CPU运行速度、使用固态硬盘等)。
从软件优化的角度来说,有以下做法:
1、减少程序中第三方控件的引用,尤其是一些冗余的三方控件引用要清理掉。
2、优化下操作系统、即时杀毒监控程序等。
3、在编写代码时,将 Project->Options->Packages->Build with runtime packages 选项钩上,生成 exe 最终时再关闭。(详见网文《delphi的编译速度提高》)
⑸ 如何提高vs2010编译速度
如果你的cpu够强你应该学会如何利用好它来加速你的代码编译速度,那么你怎么才能够最大限度让你的cpu发烧呢?
下面是一个对比:
比如我的cpu是i7 3770k,
编译cocos2d-x的libcocos2d工程:
不优化:
1>Time Elapsed 00:01:35.25
优化后:
1>Time Elapsed 00:00:21.66
效果显着!!!
参考网页:
Visual Studio 2010中C++并行构建调优(1)
http://developer.51cto.com/art/201003/189235.htm
1>cl : Command line warning D9030: '/Gm' is incompatible with multiprocessing; ignoring /MP switch
解决办法是:
Properties -> Configuration Properties -> C/C++ -> Code Generation -> Enable Minimal Rebuild -> No(/Gm-)
Properties -> Configuration Properties -> C/C++ -> Geneal -> Multi-processor Compilation -> Yes(/MP)
一些含义和拓展资料:
Enable minimal rebuild
通过保存关联信息到.IDB文件,使编译器只对最新类定义改动过的源文件进行重编译,提高编译速度
Enable Incremental Compilation
同样通过.IDB文件保存的信息,只重编译最新改动过的函数
/MP (Build with Multiple Processes)
http://msdn.microsoft.com/en-us/library/bb385193.aspx
/Gm (Enable Minimal Rebuild)
http://msdn.microsoft.com/en-us/library/kfz8ad09.aspx