【发布时间】:2016-09-03 03:45:16
【问题描述】:
在阅读了article 关于快速编译时间之后。我感兴趣的是为什么使用超过 2 个序列合并运算符会显着增加编译时间。
示例: 编译时间 3.65 秒。
func fn() -> Int {
let a: Int? = nil
let b: Int? = nil
let c: Int? = nil
return 999 + (a ?? 0) + (b ?? 0) + (c ?? 0)
}
编译时间 0.09 秒。
func fn() -> Int {
let a: Int? = nil
let b: Int? = nil
let c: Int? = nil
var res: Int = 999
if let a = a {
res += a
}
if let b = b {
res += b
}
if let c = c {
res += c
}
return res
}
【问题讨论】:
-
这在 swift 4 或 swift 5 中仍然有效吗?我了解原因(类型推断)背后的原理,但现在看来可以改进。
-
@rmooney 我将第一个函数添加到一个现有文件中,编译器直接出错,说它无法在合理的时间内解析表达式。我认为它还没有解决。
标签: swift compilation