Rumah  >  Artikel  >  Java  >  ## Adakah Memanggil `array.length` dalam for Loop merupakan Bottleneck Prestasi?

## Adakah Memanggil `array.length` dalam for Loop merupakan Bottleneck Prestasi?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 00:38:02779semak imbas

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

Kos Tatasusunan Panggilan.panjang

Apabila menggantikan gelung dengan untuk setiap gelung, pembangun sering menghadapi corak berikut:

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

Daripada yang lebih mudah:

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

Ini menimbulkan persoalan: adakah tugasan tambahan n = a.length merupakan prestasi yang dicapai untuk tatasusunan?

Jawapannya

Tidak , panggilan ke array.length ialah O(1) atau operasi masa tetap.

Sifat .length tatasusunan ialah ahli akhir awam dan mengaksesnya tidak lebih perlahan daripada pembolehubah tempatan. Ini tidak seperti panggilan kaedah seperti size(), yang biasanya melibatkan lebih banyak overhed.

Pengkompil JIT moden juga boleh mengoptimumkan panggilan ke .length untuk menghapuskannya sepenuhnya. Untuk mengesahkan ini, seseorang boleh memeriksa kod sumber pengkompil JIT atau memeriksa kod asli yang dibuang.

Walau bagaimanapun, pengkompil JIT mungkin tidak sentiasa dapat melaksanakan pengoptimuman ini, seperti apabila penyahpepijatan didayakan atau apabila badan gelung mengandungi pembolehubah setempat yang berlebihan.

Atas ialah kandungan terperinci ## Adakah Memanggil `array.length` dalam for Loop merupakan Bottleneck Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn