我已经在-Xfrontend -warn-long-expression-type-checking=50我的 Swift 项目中添加了这个标志,看看是什么花费了太长时间。我有以下表达式:
let s: String = "1234"
let t: Int? = Int(s)
Run Code Online (Sandbox Code Playgroud)
在Int(s)我收到警告Expression took 52ms to type-check (limit: 50ms)。我只是想知道为什么这需要超过 50 毫秒才能弄清楚,因为我指定了所有类型。
如果我们尝试运行这个初始化程序:
let t: Int? = Int(s, radix: 10)
我们可以看到类型检查速度快了很多。
查看Int代码完成中的初始化程序,我可以看到有几个需要 a String,所以我的猜测是编译器只是尝试根据参数解析一个并返回Int?,这需要更长的时间
当我们提供基数时,我们所做的是限制可能选择的数量,这就是代码类型检查速度更快的原因。当然,这纯粹是我的猜测!
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |