ホームページ > Java > &#&チュートリアル > 「myList.toArray(new MyClass[myList.size()]) と myList.toArray(new MyClass[0]): どちらが Java でより良いパフォーマンスを提供しますか?」

「myList.toArray(new MyClass[myList.size()]) と myList.toArray(new MyClass[0]): どちらが Java でより良いパフォーマンスを提供しますか?」

Mary-Kate Olsen
リリース: 2024-11-28 09:16:12
オリジナル
257 人が閲覧しました

`myList.toArray(new MyClass[myList.size()]) vs. myList.toArray(new MyClass[0]): Which Offers Better Performance in Java?`

配列初期化による toArray のパフォーマンスへの影響

myList.toArray(new MyClass[myList.size()]) かどうかの問題myList.toArray(new MyClass[0]) はより優れたパフォーマンスを提供するため、Java 開発者の好奇心を刺激しています。 2 番目のアプローチはより簡潔に見えますが、空の配列が作成時に省略されるという仮定が常に当てはまるとは限りません。

ベンチマーク結果

この問題を明らかにするにはでは、Java HotSpot 8 を使用してマイクロベンチマークが実施されました。以下に示す結果から、直感に反する toArray(new MyClass[0]) メソッドが使用されていることがわかります。 toArray(new MyClass[myList.size()]) の対応物:

Benchmark                      (n)  Mode  Samples    Score   Error  Units
c.a.p.SO29378922.preSize         1  avgt       30    0.025 ▒ 0.001  us/op
c.a.p.SO29378922.preSize       100  avgt       30    0.155 ▒ 0.004  us/op
c.a.p.SO29378922.preSize      1000  avgt       30    1.512 ▒ 0.031  us/op
c.a.p.SO29378922.preSize      5000  avgt       30    6.884 ▒ 0.130  us/op
c.a.p.SO29378922.preSize     10000  avgt       30   13.147 ▒ 0.199  us/op
c.a.p.SO29378922.preSize    100000  avgt       30  159.977 ▒ 5.292  us/op
c.a.p.SO29378922.resize          1  avgt       30    0.019 ▒ 0.000  us/op
c.a.p.SO29378922.resize        100  avgt       30    0.133 ▒ 0.003  us/op
c.a.p.SO29378922.resize       1000  avgt       30    1.075 ▒ 0.022  us/op
c.a.p.SO29378922.resize       5000  avgt       30    5.318 ▒ 0.121  us/op
c.a.p.SO29378922.resize      10000  avgt       30   10.652 ▒ 0.227  us/op
c.a.p.SO29378922.resize     100000  avgt       30  139.692 ▒ 8.957  us/op
ログイン後にコピー

説明

Java 仮想マシン (JVM) と JIT コンパイラーは一貫して優れています。最適化により、適切なサイズの配列を効率的に作成および初期化できるようになります。これらの最適化は、配列が手動で作成された場合には利用できません。

結論

ブログ投稿 Arrays of Wisdom of Ancients では、myList.toArray(new MyClass[0]) が次のような状況で推奨されるアプローチであることは明らかです。パフォーマンスが懸念されます。空の配列作成のオーバーヘッドは JVM の最適化によって効果的に排除され、パフォーマンスが向上します。

以上が「myList.toArray(new MyClass[myList.size()]) と myList.toArray(new MyClass[0]): どちらが Java でより良いパフォーマンスを提供しますか?」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート