gpt4 book ai didi

ios - Swift 3.0 迁移后的 Project-Swift.h 文件正在编译相同的函数数百次,编译时间为 7 分钟

转载 作者:行者123 更新时间:2023-11-28 06:24:59 24 4
gpt4 key购买 nike

迁移到 Swift 3.0 后,我们的第一次构建时间现在需要 7 分钟,而过去需要 1:20。有谁知道我怎样才能加快速度?

我从事一个大型项目,其中包含大量 Objective C 文件、大约 640 个 Swift 文件、20 个 Cocoapod 依赖项、一个 Today View 扩展和 UITest。第一次构建后,增量构建只需要大约 10 秒。

我在这里运行了出色的构建时间分析器: https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode 并附上下面的截图。

enter image description here

似乎有大约 20 个类中的几个函数被编译了 631 次。这似乎是问题所在,但我不知道如何解决。没有其他函数或类需要很长时间才能自行编译。

几乎所有 7 分钟的构建时间都花在了编译 swift 文件上,直到出现以下输出: enter image description here在这一行之后,所有其余的 swift 文件都将在大约 10 秒内编译并运行。

值得注意的是,生成的 project-swift.h 文件有 4500 行长,bridging-header 有 150 行导入。

最佳答案

这可能不是一个完整的解决方案,但至少这是正在发生的事情。因此,您可能有 631 个文件指向 ViewControllerRecycler.swift

假设 ClassA 从 ViewControllerRecycler.swift 调用某些东西,ClassC 从 ViewControllerRecycler.swift 调用一些东西等等。

如果您遵循 this 并将调试标志 -driver-show incremental 添加到“other swift flags”,您将看到如下内容:

Queuing ViewControllerRecycler.swift
Queuing ClassA.swift
Queuing ViewControllerRecycler.swift because of dependencies discovered later

然后

Queuing ViewControllerRecycler.swift because of dependencies discovered later
Queuing ViewControllerRecycler.swift because of dependencies discovered later
Queuing ViewControllerRecycler.swift because of dependencies discovered later

类似的东西。例如,当 ClassA 发生变化时,即使与 ViewControllerRecycler.swift 无关,它也会“由于依赖”而再次排队等待编译。这会导致您的文件被多次编译。

您可能需要查看以下站点以尝试优化您的代码以使其更快:

也许这些会帮助你编译得更快一些,如果不是非常快的话

关于ios - Swift 3.0 迁移后的 Project-Swift.h 文件正在编译相同的函数数百次,编译时间为 7 分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com