【发布时间】:2015-10-03 13:21:56
【问题描述】:
我有一个包含大约 25 个小文件的 Swift SpriteKit 项目。编译这个项目的时间是 30-45 秒!它是没有 ObjC 的纯 Swift。
我在 Report Navigator 中观看了编译,试图找到一个耗时的文件。但是,它并不是真正的单个文件。似乎总是在列表中的 last 文件。但是该文件在编译之间可能会有所不同,并且仍然需要花费所有时间。
最后一个文件之后的步骤是 Merge xxx.swiftmodule,它发生得很快,但我不确定是否因为它紧随其后可能与缓慢有关。
我已经搜索并尝试了各种方法来找到罪魁祸首。我读了这篇文章:Why is Swift compile time so slow? 并尝试了这些方法。我已经使用 CTRL-\ 完成了命令行构建,但没有显示任何有关缓慢的有用信息。
我已经完成了我的项目,寻找类型推断可能会出错的地方,但没有找到太多(真的,如果是这样的话,我希望单个文件是罪魁祸首) .
有没有人有任何其他的建议来追踪这个?来自一个几乎可以立即编译的 Objective-C 项目,这让我发疯。
编辑 我在这方面做了更多的工作,并且包括了构建输出的屏幕截图,并指出了缓慢发生的位置。问题是,如果我注释掉慢速文件中的代码,那么列表中的 before 文件就会变成慢速文件(以前很好)。如果我将该代码注释掉,那么 before 就会变成慢代码,以此类推。
【问题讨论】:
-
编译还是链接?没有你发布任何日志,我们几乎无法帮助你,除了告诉你 a) 使用 Swift 2.0,b) 等待 Apple 真正发布 Swift 2.0。
-
键入每个数组和字典 - 不要强迫编译器推断它。我习惯于输入所有内容 - 每个 let 和每个 var - 以降低编译速度(在我的慢速 MacBook Air 上......)
-
谢谢克劳斯。我会看看抓取一些日志。顺便说一句,我使用的是 Swift 2.0。
-
如何测量单个文件的编译时间?
标签: ios swift compilation