より高速なJavaの場合:
- オブジェクトのクローンを作成し、クローンされたオブジェクトにネストされた配列、プリミティブ、文字列よりも複雑なものが含まれていないと想定して、複数のリスナーにオブジェクトを渡します。
- Streamsを使用して、あるオブジェクトから別のオブジェクトにデータを渡しますか?
より高速なJavaの場合:
clone()の実装が適度に正常であると仮定すると、クローン作成はより高速になります。
これは、clone()が、オブジェクトのコピーを作成するという1つのことだけを行うための高度に特殊化された関数であるためです。したがって、心配する必要のあるオーバーヘッドはあまりありません。通常、フィールドごとに新しいオブジェクトインスタンスにコピーするだけです。
ただし、オブジェクトを不変にし、インスタンスのクローン作成について心配する必要がないようにすることで、さらに高速になります:-)
次の理由により、クローン作成の方が高速だと思います。
クローンを作成すると、オブジェクトとその属性をインスタンス化して、別のオブジェクトからオブジェクトを作成します。ストリームを使用する場合、オブジェクトをシリアライズしてデシリアライズします (Java はオブジェクトのインスタンスも作成する必要があります)。したがって、ストリームを使用すると、オブジェクトをシリアル化するオーバーヘッドが生じます。
もちろん、clone() の実装は、オブジェクトをコピーする時間を増加させる異常なことを行うべきではありません。配列、プリミティブ、および文字列を使用してオブジェクトを複製するには、それほど時間がかからないようにする必要があります。