gpt4 book ai didi

ios - 桥接 header 中导入的文件数量是否会影响编译时间?

转载 作者:IT王子 更新时间:2023-10-29 05:27:40 27 4
gpt4 key购买 nike

我有一个理论,但我不知道如何验证它。我们有一个相当大的 iOS 项目,包含大约 200 个 Swift 文件和 240 个 obj-C 文件(以及等量的头文件)。我们仍在使用 Swift 1.2,这意味着整个项目会定期重建。

我注意到每个 .swift 文件的编译时间大约为 4-6 秒;在其他项目中,这最多为 2。

现在,我注意到在构建输出中,头文件中生成的警告会针对每个 .swift 文件重复出现,这让我相信 swift 编译器将重新解析桥接 header 中包含的所有 header 。由于我们在桥接 header 中有大约 160 个导入语句,所以加起来有点多。

那么,基本问题:

  • 桥接 header 的大小会影响构建时间吗?
  • 有什么方法可以优化它,让它只解析一次 header 吗?
  • Swift 2 是否有同样的问题?
  • 还有其他优化技巧吗?除了用 Swift 重写所有内容之外,对于我们目前来说,这是一个过于劳动密集型的项目。

最佳答案

Does the size of our bridging header impact build times?

当然。桥接 header 中包含的文件越多,编译器解析它们所需的时间就越多。这就是预编译 header 试图修复的问题。 PCH 文件已被逐步淘汰,取而代之的是模块。

Is there any way to optimize this, so it parses the headers only once?

老实说我不知道​​,这取决于你的源文件和依赖项。

Does Swift 2 have this same issue?

是的,但编译器优化在较新版本的 Xcode 和 Swift 中要好得多。同样,在这里强调模块而不是预编译头文件。我应该指出,可以将 pch 文件直接传递给 clang,但这很少是个好主意。

如果可以,我会尝试在混合项目中使用 pch header 。我还会考虑创建预编译库或静态框架,以防止不断重建类。 2013 年有一个很棒的 WWDC 视频介绍了模块,我强烈推荐观看。

引用资料:

关于ios - 桥接 header 中导入的文件数量是否会影响编译时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34199452/

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