array.length 呼び出しのコストを理解する
for ループを for-each ループに更新する際に、ループのインスタンス化が行われることがよく観察されます。 array.length を含む変数は、各反復内での size() メソッド呼び出しの必要性を排除することで、コレクションのパフォーマンスを向上させます。ただし、これにより次のような疑問が生じます: 通常の変数を使用する場合と比較して、array.length を呼び出すコストはどのくらいですか?
答え: 定数時間操作
逆に、array を呼び出すと、 .length は、O(1) 演算または定数時間演算です。これは、配列のパブリック最終メンバーとして動作する array.length へのアクセスは、ローカル変数へのアクセスよりも遅くないことを意味します。これは、追加のオーバーヘッドを伴う size() のようなメソッド呼び出しとはまったく対照的です。
最新の JIT コンパイラーは通常、array.length への呼び出しを最適化し、コストを効果的に削減します。これを確認するには、JIT コンパイラーのソース コードを調べるか、検査のために JIT コンパイルされたネイティブ コードをエクスポートするように JVM に要求します。
最適化の例外
これは重要です。特定の状況では、JIT コンパイラが array.length のコストを最適化できない場合があることに注意してください:
以上が## array.length の呼び出しは本当に高価ですか? 配列サイズのアクセスのコストを見てみましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。