如何缩短Xcode中的构建/存档时间?

时间:2014-01-24 12:23:54

标签: xcode

我在Xcode中的构建/存档时间比我想要的要长。所以我正在寻找更快地构建我的项目的方法,而且我知道我在不是顶级Mac上。我正在考虑升级到新的Mac。所以我的问题是:

在构建/存档项目时,Xcode主要是RAM还是CPU很重?也就是说,我应该在新的Mac中寻找什么,以便加快我的构建/执行过程?

2 个答案:

答案 0 :(得分:5)

第一个问题是你是否正在充分利用当前的Mac。特别是,你是否尽可能多地并行建造?在构建期间打开Activity Monitor并点击Cmd-2。这将分别显示所有核心。在构建过程中,它们大部分时间都在100%附近运行吗?如果是,那么你就是CPU限制,更多的CPU将会有所帮助。

如果他们在很多时候闲置,那么主要有两种可能:你的构建具有依赖性(可能不正确),阻止它并行构建,或者你在其他地方遇到瓶颈。在活动监视器中打开“内存”选项卡你在交换吗?如果你交换,获得更多的记忆,时间。没有任何一件事可以提高性能而不是阻止交换。此外,如果您尚未使用10.9,请升级。 10.9对内存管理有几个非常聪明的改进,可以更好地利用相同的资源。

稍微观察你的构建。它需要花时间在哪里?在一个非常大的项目中陷入困境的一个常见地方是在链接步骤中(特别是如果你正在进行静态库的大量链接)。链接通常不受CPU限制。有时它的内存受限,但通常是磁盘受限制。如果是这样,正如@bbarnhart指出的那样,SSD可以产生很大的不同(融合驱动器可以很好地结合SSD速度和HDD容量)。

你有很多ObjC ++吗? ObjC ++的编译速度比ObjC或C ++慢得多。如果可能的话,减少你对ObjC ++的使用,它会加速构建(并改善调试,减少内存使用,提高性能......)我不是ObjC ++的忠实粉丝,虽然它在最近的clang中变得更好了的版本)。

但是,在大多数情况下首先购买的最常用的术语是:始终获得尽可能多的内存,然后是快速磁盘,然后是大量CPU内核,然后是快速CPU内核。这是现代编译器的典型瓶颈。

答案 1 :(得分:0)

您是否试图了解Xcode在构建项目时实际花费了多少时间?通常开发人员只倾向于在项目构建之间进行非常小的更改(例如,只编辑数百或数千个中的一个或两个文件),Xcode通常非常擅长自动跳过不必要的步骤(例如,只编译或复制自那以后真正改变的文件)你最后的构建)。但在某些情况下,Xcode无法正确识别并执行比实际需要更多的工作。您的项目/构建设置也可能是不幸的,迫使Xcode执行比实际需要更多的工作。在某些情况下,可以将其他构建步骤替换为执行速度更快的构建步骤。

E.g。我已经能够将大型项目的构建时间从15分钟缩短到5分钟以下,以实现完整,干净的发布版本。对于另一个项目,我已经能够优化构建过程,并在编辑几个源文件时将开发人员的重建时间从40秒减少到10秒以下。

与所有优化一样:除非您现在真正解决问题,否则无法进行优化。那么Xcode究竟在哪里失去时间呢?它是否构建了所有源文件?是不是需要这么长时间的大量源文件,或者只编写一些非常大的源文件或包含太多标题的源文件?是构建需要太长时间的前缀头吗?它每次都建立吗?它是否将目标文件链接在一起?它是动态生成某些文件吗?它是构建还是与依赖库或框架链接?它是复制资源文件吗?它是在处理资源文件吗?