swift - 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)
似乎投射Int
到Float
,Double
或CGFloat
显示减慢 150 毫秒。
解决方案
请注意,这warn-long-function-bodies
是不受支持的(它是作为实验标志添加的)。如果你去掉它,我发现表达时间通常报告两倍快,这让人相信同时使用这两个测量会造成干扰。测量也需要时间。warn-long-expression
是受支持的选项。
推荐阅读
- android - 从 api 递归获取数据
- java - 如何将代码构建到一个 jar 中,并将所有 maven 依赖项构建到 pom.xml 中的另一个 jar 中
- python - 更新 scikit-learn
- nlp - 如何在内置 spacy 模型“en_core_web_lg”中添加自定义公司作为 ORG 实体?
- r - 无法在点和点密度上映射多边形
- assembly - 如果我有 BIOS 参数块,为什么我的引导加载程序代码可以在除我的笔记本电脑之外的任何地方工作?
- firebase - React Native Firebase 根据其他用户的操作实时更新所有用户的信息
- docker - teamcity 在哪个 IP 上运行我的 docker 映像
- php - 需要一个正则表达式来动态捕获精确的 uri 字符串
- swift - 'NSKeyedUnarchiveFromData' 不应用于取消归档,并将在未来版本中删除