Luc*_*tti 12 performance constants swift
我知道Swift确实鼓励我们程序员每次有意义时都使用常量(let)而不是变量(var).
这是一件好事,因为我们正在向编译器提供有关我们的代码意味着什么的更多细节,并且编译器可以更好地防止我们犯错误(例如,更改一些不应更改的值).
我的问题是,当我们使用常量而不是变量时,编译器是否会应用一些性能优化?(例如,执行时间更短,占地面积更小,......).
Dun*_*n C 14
你问"......当我们使用常量而不是变量时,编译器是否会应用一些性能优化?"
答案是肯定的,绝对的.
可变集合的组织方式可以与不可变集合不同,以便允许更改它们.可以针对只读操作优化不可变集合.
然后是使用可变/不可变对象.编译器可能必须生成代码,该代码在将可变对象作为另一个对象的属性共享时复制该可变对象,以避免不期望的副作用.
不可变对象(等同/可比较)的比较也可以以可变对象不能的方式进行优化.
Sulthan关于编译器智能的观点虽然很好.编译器通常可以推断变量永远不会从代码分析中改变,这可以使基准测试变得难以与变量使用相比较.
现在的正确答案是"可能不是".
向编译器提供附加信息总是明智的,但是,编译器已经非常智能.在许多情况下,即使你使用它,它也可以看到一个变量实际上是一个常量var,所以说let不会是任何新的信息而且它不会带来好处.
const/ 的最大好处let是防止编程错误.它在非常特殊的情况下可以有一些性能优势,但现代编译器并不需要程序员告诉他们变量只分配一次.