gpt4 book ai didi

使用 nil 合并运算符的 Swift 编译时间

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:20 26 4
gpt4 key购买 nike

阅读 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
}

最佳答案

我几乎可以肯定这与类型推断有关。在解释所有这些 +?? 运算符时,编译器在幕后做了大量工作来推断这些参数的类型。仅 + 运算符就有大约三十个重载,当您将其中几个重载链接在一起时,编译器的工作比您想象的要复杂得多。

关于使用 nil 合并运算符的 Swift 编译时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37099982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com