首页 > 解决方案 > Swift 类型检查需要很长时间

问题描述

我已将标志添加-Xfrontend -warn-long-expression-type-checking=50到我的 Swift 项目中,以查看花费的时间太长。我有以下表达式:

let s: String = "1234"
let t: Int? = Int(s)

Int(s)我收到警告Expression took 52ms to type-check (limit: 50ms)。我只是想知道为什么这需要超过 50 毫秒才能弄清楚,因为我指定了所有类型。

标签: swiftxcode

解决方案


如果我们尝试运行这个初始化程序:

let t: Int? = Int(s, radix: 10)

我们可以看到类型检查要快得多。

查看Int代码完成中的初始化程序,我可以看到有几个需要 a String,所以我的猜测是编译器只是试图根据参数解析一个并返回Int?,这需要更长的时间

当我们提供 radix 时,我们所做的是限制可能选择的数量,这就是代码类型检查更快的原因。当然,这纯粹是我的猜测!


推荐阅读