最佳答案
单文件优化
这种优化模式让编译器为程序中的每个文件运行一个前端实例。它分别对每个文件运行优化,从项目中的其他文件加载尽可能少的信息。
优点
- 在进行增量编译时,编译器不必重新编译您的整个项目,而是可以只重新编译已更改的文件或依赖已更改的文件
- 编译器为每个文件运行一个实例,因此在多核计算机上,编译速度更快
缺点
- 如果正在优化的内容跨越多个文件,则不会执行某些优化
- 编译器确实必须从其他文件中获取一些信息,因此它可能会比必要的次数重复这项工作(如果 6 个文件引用另一个文件,则该文件可能会对其执行 6 次,而实际上只需要 1 次)
全模块优化
此优化模式将为您的整个模块运行一个前端实例。它一次对所有文件运行优化。
优点
- 这将执行 swift 编译器可以执行的最大优化
- 执行比单文件优化更少的冗余工作
缺点
- 这将只使用一个 CPU 核心来对您的代码运行所有特定于 swift 的优化。这意味着不会充分利用多核计算机来编译您的代码
- 在增量编译中,你的整个模块仍然需要每次都重新编译
使用什么
对于调试版本,我强烈建议完全禁用优化。这将使调试器中的代码单步执行更可预测,并缩短构建时间。如果您真的需要优化,您可能应该使用单文件以获得更好的增量编译时间。
对于发布构建,我建议使用整个模块优化,因为它可以执行比单个文件优化更多的优化。
关于swift - 单文件优化与整个模块优化之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47998583/