V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shippo7
V2EX  ›  问与答

如何排查 Swift 编译速度慢的原因

  •  
  •   shippo7 · 2016-07-24 13:19:22 +08:00 · 3881 次点击
    这是一个创建于 3073 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近接手了一个 Swift 项目,以前是个外包公司做的,发现编译速度巨慢,每次要编译将近 10 分钟。而且有时候不 clean 的话,程序会出现一些奇怪的问题,我等的快烦死了。有什么办法能排查编译速度慢的原因吗?

    • Debug Information Format 已经设置为 DWARF
    • 我自己做的 Swift 项目编译没问题,只有这一个项目编译慢
    • 项目用的 VIPER 结构,各种继承关系特别复杂,是不是这个原因?看编译日志,平均每个文件编译都慢,不是卡在某一个文件上
    2 条回复    2016-07-24 15:07:32 +08:00
    walkingway
        1
    walkingway  
       2016-07-24 15:04:19 +08:00   ❤️ 2
    之前总结过,对 Swift 2.2 编译性能影响比较严重的有以下几点:

    1. 尽量不要用类型推断,这个有严重的性能 bug
    2. 尽量不要用 lazy var
    3. 尽量少用 closure

    关于编译消耗具体时间的细节可以看这篇文章: http://irace.me/swift-profiling

    比如,在 Swift 2.2 里下面这种要编译 12 个小时,不过有人已经提交给 Apple 修正了, Swift 3.0 会修复,但是现在还是忍着吧

    walkingway
        2
    walkingway  
       2016-07-24 15:07:32 +08:00
    还有实现直接写在类里比写在 extension 里编译要快
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2856 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:47 · PVG 20:47 · LAX 04:47 · JFK 07:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.