优化Swift编译时间

您在项目中使用Swift进行编译时是否遇到任何问题? 我知道我已经知道了,这让我想知道为什么要花这么多时间来编译,以及如何才能使编译时间更快。

经过研究,我从Robert Gummesson那里读了这篇文章,阐明了编译器如何看待我的代码,以及如何使它更好地使其更快地工作。 在研究了我当前正在研究的项目之后,我决定该是时候最终改善项目的编译时间并节省一些宝贵时间了。 优化代码“编译器样式”后,我将向您展示前后

首先要做的是评估Swift需要花更多时间在哪里编译代码并对其执行操作。 为此,我使用了Robert的Build Time Analyser,使生活更容易查看和比较构建时间。 按照说明进行操作并构建项目后,我花了7分钟以上的时间来编译项目。

七分钟似乎并不多,但是当您不得不每天从一个分支机构切换到另一分支几次时,这7分钟就成为一个问题。

好的,我有项目的编译时间,并且我的项目中编译的类也最慢,这正是我要关注的地方。

我将向您展示当前正在从事的项目“前后”的构建时间。 在此之前,我将向您展示我关注的一些优化选项。

三元运算符

在这个简单的示例中,仅通过用if-else语句替换三元运算符,就可以将构建时间减少97%

我们可以看到我们有CarImmersionView,AssistancePresenter,CarImageService,MileageInputViewController,TrackRequestViewControllerURLExtensions。 我在这些方法中处理了可以重构的任何函数,就像前面的示例一样。

重构这些文件后,这就是我得到的结果:

我们可以看到构建时间减少了将近1分钟。 当然,构建时间会因构建而异,有时,如果不执行任何操作,文件编译的速度将比以前慢或快。 但是,每次迭代之后,这快一分钟的编译时间是一致的。

我们可以看到,通过尽力为编译器优化代码,我们可以缩短应用程序的构建时间。 当然,我们需要评估这段时间是否值得。 编译器喜欢用.forEach替换.map ,但是使用map函数可以更好地读取代码。 因此,归根结底,这是一个折衷,它取决于每个项目和团队才能在代码可读性和编译时间之间找到共同点。

Apple一直在不断改进Swift和Xcode,因此此处介绍的时间可能与我们不久的将来有所不同。 作为参考,对于本文中的任何内容,我都使用MacBook Pro 20172.3 GHz Intel Core i5以及运行Xcode 9.2的 16 GB内存。