[英]What are the benefits of `let` in Swift?
我知道Swift確實鼓勵程序員每次有意義時使用常量( let
)而不是變量( var
)。
這是一件好事,因為我們正在向編譯器提供有關我們的代碼意味着什么的更多細節,並且編譯器可以更好地防止我們犯錯誤(例如,更改一些不應更改的值)。
我的問題是,當我們使用常量而不是變量時,編譯器是否會應用一些性能優化 ? (例如,執行時間更短,占地面積更小,......)。
你問“......當我們使用常量而不是變量時,編譯器是否會應用一些性能優化?”
答案是肯定的,絕對的。
可變集合的組織方式可以與不可變集合不同,以便允許更改它們。 可以針對只讀操作優化不可變集合。
然后是使用可變/不可變對象。 編譯器可能必須生成代碼,該代碼在將可變對象作為另一個對象的屬性共享時復制該可變對象,以避免不期望的副作用。
不可變對象(等同/可比較)的比較也可以以可變對象不能的方式進行優化。
Sulthan關於編譯器智能的觀點是一個很好的觀點。 編譯器通常可以推斷變量永遠不會從代碼分析中改變,這可以使基准測試變得難以與變量使用相比較。
現在的正確答案是“可能不是”。
向編譯器提供附加信息總是明智的,但是,編譯器已經非常智能。 在許多情況下,即使你使用var
,它也可以看到一個變量實際上是一個常量,所以說let
不會是任何新的信息而且它不會帶來好處。
const
/ let
的最大好處是防止編程錯誤。 它在非常特殊的情況下可以有一些性能優勢,但現代編譯器並不需要程序員告訴他們變量只分配一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.