Java 8 でのラムダ式のパフォーマンスへの影響
Java 8 のストリーム API を使用してコレクションを反復処理する場合、新しい構文シュガーが導入されましたラムダ式。ただし、「反復ごとにヒープ上に匿名の Consumer オブジェクトが作成されることになりますか?」という疑問が生じます。
Lambda は毎回ヒープ上に新しいオブジェクトを作成しますか?
答えは「いいえ」ですが、それほど単純ではありません。ラムダ式が値を取得しない場合、ラムダ式は基本的に呼び出しごとに再利用されるシングルトンになります。
JVM 実装の詳細
Java 仮想マシン (JVM)ラムダ式を柔軟に実装できます。 Oracle の JVM は現在、ラムダ式ごとに少なくとも 1 つのインスタンスを作成しますが、値をキャプチャしない式に対してはシングルトンを作成します。
パフォーマンスへの影響
この動作はメモリのパフォーマンスに影響します。消費量と実行時間:
古いスタイルを使用する場合Loop
一般的に、コレクションの反復にはラムダ式を使用することをお勧めします。これは、ラムダ式を使用すると簡潔で読みやすいコードが得られるためです。パフォーマンスが重要な非常に大規模なマルチレベル データ構造の場合は、従来の for ループの使用を検討できます。ただし、データ構造が本当に大規模でない限り、パフォーマンスの違いはわずかである可能性があります。
Java 言語仕様
ラムダ式の動作については、The Java で説明されています。 ® 言語仕様の「15.27.4. ラムダ式の実行時評価」の章。これにより実装の柔軟性が向上し、JVM がメモリ使用量と実行時間を最適化できるようになります。
以上がJava 8 ラムダ式は反復ごとに新しいオブジェクトを作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。