了解調用array.length
將for 循環更新為for-each 循環時,經常會觀察到實例化循環帶有array .length 的變數消除了每次迭代中對size() 方法呼叫的需要,從而增強了集合的性能。然而,這提出了一個問題:與使用常規變數相比,呼叫 array.length 的成本是多少?
答案:恆定時間操作
相反,呼叫 array .length 是 O(1) 操作或常數時間操作。這意味著存取 array.length(其行為相當於陣列的公共最終成員)並不比存取局部變數慢。這與 size() 等方法呼叫形成鮮明對比,後者涉及額外的開銷。
現代 JIT 編譯器通常會最佳化對 array.length 的調用,從而有效地消除成本。若要驗證這一點,請檢查 JIT 編譯器的原始程式碼或要求 JVM 匯出 JIT 編譯的本機程式碼進行檢查。
最佳化異常
很重要需要注意的是,在某些情況下,JIT 編譯器可能無法最佳化array.length 的成本:
以上是## 呼叫 array.length 真的很昂貴嗎? 查看數組大小存取的成本。的詳細內容。更多資訊請關注PHP中文網其他相關文章!