Swift 版本中的类型检查规则?

Rules for type check in Swift builds?

我想加快构建时间,所以其中一个步骤是使用 Other Swift Flags

-Xfrontend -warn-long-function-bodies=100
-Xfrontend -warn-long-expression-type-checking=100


但我不太确定类型检查是如何工作的。例如,这是一个用于创建 random CGFloat 的简单函数。类型检查是否超过 200 毫秒

static func randomColorValue() -> CGFloat {
    return CGFloat(Int.random(in: 0...255))/255.0
}

但要改成这样

  static func randomColorValue() -> CGFloat {
         let rnd    = Int.random(in: 0...255)
         let frnd   = CGFloat(rnd)
         let result = frnd/255.0

         return result
     }

或者像这样

static func randomColorValue() -> CGFloat {
     let rnd    : Int     = Int.random(in: 0...255)
     let frnd   : CGFloat = CGFloat(rnd)
     let result : CGFloat = frnd/255.0

     return result
 }

类型检查仍然超过 200 毫秒。


这里出了什么问题?是否有一套处理构建时间的规则和最佳实践? 我的 Mac 有点旧(2012 年),也许这就是问题所在?


编辑:

关闭后-warn-long-function-bodies出现问题的线路,那就是

CGFloat(rnd)

似乎将 Int 转换为 FloatDoubleCGFloat 显示速度减慢了 150 毫秒。

请注意 warn-long-function-bodies 不受支持 (it was added as an experimental flag)。如果你删除它,我发现表达时间通常报告为两倍快,这让人相信同时使用这两个测量值会造成干扰。测量也需要时间。 warn-long-expression 是受支持的选项。