首頁 > Java > java教程 > 主體

## 在 for 迴圈中呼叫 `array.length` 是效能瓶頸嗎?

Mary-Kate Olsen
發布: 2024-10-26 00:38:02
原創
780 人瀏覽過

## Is Calling `array.length` in a for Loop a Performance Bottleneck?

呼叫array.length 的成本

將for 循環替換為for-each 循環時,開發人員經常會遇到以下模式:

<code class="java">for (int i = 0, n = a.length; i < n; i++) {
    ...
}</code>
登入後複製

而不是更簡單的:

<code class="java">for (int i = 0; i < a.length; i++) {
    ...
}</code>
登入後複製

這提出了一個問題:額外的n = a.length 賦值是否會影響陣列的效能?

答案

否,對 array.length 的呼叫是 O(1) 或常數時間運算。

陣列的 .length 屬性是公共最終成員,存取它並不比局部變數慢。這與 size() 等方法呼叫不同,後者通常會涉及更多開銷。

現代 JIT 編譯器還可以最佳化對 .length 的呼叫以完全消除它。要驗證這一點,可以檢查 JIT 編譯器的原始碼或檢查轉儲的本機程式碼。

但是,JIT 編譯器可能無法始終執行此最佳化,例如在啟用偵錯或啟用偵錯時循環體包含過多的局部變數。

以上是## 在 for 迴圈中呼叫 `array.length` 是效能瓶頸嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!