首页 > 解决方案 > Swift 构建中的类型检查规则?

问题描述

我想加快构建时间,所以其中一个步骤是使用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)

似乎投射IntFloat,DoubleCGFloat显示减慢 150 毫秒。

标签: swiftbuild-time

解决方案


请注意,这warn-long-function-bodies是不受支持的(它是作为实验标志添加的)。如果你去掉它,我发现表达时间通常报告两倍快,这让人相信同时使用这两个测量会造成干扰。测量也需要时间。warn-long-expression是受支持的选项。


推荐阅读