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
转换为 Float
、Double
或 CGFloat
显示速度减慢了 150 毫秒。
请注意 warn-long-function-bodies
不受支持 (it was added as an experimental flag)。如果你删除它,我发现表达时间通常报告为两倍快,这让人相信同时使用这两个测量值会造成干扰。测量也需要时间。 warn-long-expression
是受支持的选项。
我想加快构建时间,所以其中一个步骤是使用 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
转换为 Float
、Double
或 CGFloat
显示速度减慢了 150 毫秒。
请注意 warn-long-function-bodies
不受支持 (it was added as an experimental flag)。如果你删除它,我发现表达时间通常报告为两倍快,这让人相信同时使用这两个测量值会造成干扰。测量也需要时间。 warn-long-expression
是受支持的选项。