我注意到项目设置中有两个优化设置:
单文件优化
整个模块优化
有什么不同?在什么情况下我们应该选择哪一个?
这种优化模式使编译器在程序中每个文件运行一个前端实例。它分别对每个文件运行优化,从项目中的其他文件中加载尽可能少的信息。
优点
在进行增量编译时,编译器不必重新编译整个项目,而可以仅重新编译已更改的文件或依赖已更改的文件。
编译器每个文件运行一个实例,因此在具有多个内核的计算机上,它可以更快地编译
缺点
如果要优化的内容跨越多个文件,则将不会执行某些优化
编译器确实必须从其他文件中获取一些信息,因此它可能重复执行此工作的次数超过了必要的次数(如果6个文件引用了另一个文件,则仅需要1个文件就可能对该文件执行了6次工作)。
此优化模式将为整个模块运行一个前端实例。它一次对所有文件运行优化。
优点
这将执行swift编译器可以执行的最大优化
比单文件优化执行更少的冗余工作
缺点
这只会使用一个CPU内核来对代码运行所有特定于swift的优化。这意味着将无法充分利用多核计算机来编译代码
在增量编译中,您的整个模块每次仍将需要重新编译
对于调试版本,我强烈建议完全禁用优化。这将使在调试器中逐步执行代码更加可预测,并缩短构建时间。如果您确实需要优化,则可能应该使用单文件,以获得更好的增量编译时间。
对于发行版,我建议使用全模块优化,因为它可以执行比单文件优化更多的优化。