如何在Xcode中缩短构建/归档时间?

4

我的Xcode编译/存档时间比我想象的要长。因此,我正在寻找一种更快地构建项目的方法,并且我知道我使用的是不高端的Mac。我正在考虑升级到新的Mac。所以我的问题是:

在编译/存档项目时,Xcode主要依赖RAM还是CPU?也就是说,我应该在新的Mac中寻找什么,才能加速构建和存档过程?


6
一块固态硬盘(SSD)能够显著提升您的计算机性能。 - bbarnhart
你也可以将一些临时数据移动到 RAM 中以加速 Xcode。请查看此链接:http://paulofierro.com/blog/2014/3/16/speeding-up-xcode-development - skywinder
2个回答

6
第一个问题是你是否充分利用了你的现有Mac。特别地,你是否尽可能地并行构建?在构建过程中打开“活动监视器”,然后按下Cmd-2。这将单独显示所有核心。在构建过程中,它们大部分时间是否都运行在接近100%的状态?如果是这样的话,那么你的CPU受限了,更多的CPU会有所帮助。
如果它们的空闲时间很长,那么有两种主要可能性:你的构建有依赖关系(可能不正确),阻止它进行并行构建;或者你在其他地方遇到了瓶颈。在“活动监视器”的内存选项卡中打开它。你是否正在交换内存?如果你正在交换内存,那就增加一些内存,没有比防止交换更能提高性能的单个事情了。此外,如果你还没有升级到10.9,那就升级吧。10.9对内存管理进行了几个非常聪明的改进,使得更好地利用相同的资源。
观察一下你的构建。它花费时间的地方在哪里?在非常大的项目中,它经常会在链接步骤中卡住(特别是如果你在进行静态库的大规模链接)。链接通常不受CPU限制。有时它是受内存限制,但通常它是受磁盘限制的。如果是这样的话,如@bbarnhart所说,固态硬盘可以产生很大的改进(融合驱动器将SSD速度和HDD容量结合起来效果不错)。
你有很多ObjC++吗?ObjC++比ObjC或C++编译速度要慢得多。如果可能的话,请减少对ObjC++的使用,它将加快构建速度(并改善调试、减少内存使用和提高性能等方面)。尽管在最近的clang版本中它变得更好了,但我不是ObjC++的铁杆粉丝。
但总的来说,在大多数情况下购买的次序通常为:首先尽可能多地获取内存,然后是快速硬盘,接着是大量的CPU核心,最后是快速的CPU核心。这是现代编译器的典型瓶颈顺序。

0

你有没有尝试过找出Xcode在构建项目时实际花费了多少时间来完成哪些任务?通常情况下,开发人员在项目构建之间只会进行非常小的更改(例如,在数百或数千个文件中仅编辑一个或两个文件),而Xcode通常非常擅长自动跳过不必要的步骤(例如,只编译或复制自上次构建以来真正发生变化的文件)。但在某些情况下,Xcode无法正确地解决这个问题,并执行比实际需要更多的工作。此外,您的项目/构建设置可能不太合适,迫使Xcode执行比实际需要更多的工作。在某些情况下,可以用其他构建步骤替换一些构建步骤,这样可以执行得更快。

例如,我已经能够将一个大型项目的构建时间从15分钟减少到不到5分钟的完整、干净的发布构建。对于另一个项目,我已经能够优化构建过程,并将开发人员的重建时间从超过40秒减少到在编辑几个源文件时不到10秒。

像所有的优化一样: 除非你真正知道问题所在,否则你无法进行优化。那么Xcode到底在哪里浪费了时间? 它是构建了所有的源文件吗? 是太多源文件花费了太长时间还是只编译了几个非常大或者包含太多头文件的源文件? 是预编译头文件需要太长时间来构建吗?每一次都需要重新构建吗?它是将目标文件链接在一起吗?它是动态生成某些文件吗?是与依赖库或框架链接构建吗?是复制资源文件吗?还是处理资源文件吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接