performance - 在Swift中`let`有什么好处?

performance - 在Swift中`let`有什么好处?,第1张

我知道 Swift 鼓励我们程序员每次有意义时使用常量(let)而不是变量(var)。

这是一件好事,因为我们正在向编译器提供有关我们的代码含义的更多细节,编译器可以更好地防止我们犯错(例如更改一些不应更改的值)。

我的问题是,当我们使用常量而不是变量时,编译器是否会应用性能优化? (例如,执行时间更短,占地面积更小......)。

最佳答案:

2 个答案:

答案 0 :(得分:14)

你问过" ...当我们使用常量而不是变量时,编译器是否会应用一些性能优化?"

答案是肯定的,绝对是。

可变集合的组织方式可能与不可变集合的组织方式不同,以便允许更改它们。可变集合可以针对只读操作进行优化。

然后使用可变/不可变对象。编译器可能必须生成代码,当可变对象作为另一个对象的属性共享时复制该可变对象,以避免不必要的副作用。

不可变对象(equatable / comparative)的比较也可以通过可变对象的方式进行优化。

Sulthan关于编译器智能的观点是一个很好的观点。编译器通常可以推断变量永远不会从代码分析中改变,这可以使基准测试变得难以与变量使用相比。

答案 1 :(得分:8)

现在的正确答案是“可能不是”。

向编译器提供附加信息总是明智的,但编译器已经相当聪明。在许多情况下,即使您使用var,它也可以看到变量实际上是常量,因此说let不会是任何新信息,也不会带来好处。

const / let的最大好处是防止编程错误。它在非常特殊的情况下可以有一些性能优势,但是现代编译器并不需要程序员告诉他们变量只被赋值一次。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复