ホームページ > Java > &#&チュートリアル > `toArray(new MyClass[0]) と toArray(new MyClass[myList.size()]): どちらがよりパフォーマンスが高いでしょうか?`

`toArray(new MyClass[0]) と toArray(new MyClass[myList.size()]): どちらがよりパフォーマンスが高いでしょうか?`

DDD
リリース: 2024-11-24 17:28:13
オリジナル
485 人が閲覧しました

`toArray(new MyClass[0]) vs. toArray(new MyClass[myList.size()]): Which is More Performant?`

toArray(new MyClass[0]) または toArray(new MyClass[myList.size()]) パフォーマンスへの影響

ArrayList を配列に変換する場合、開発者は 2 つのうちのいずれかを選択できます。アプローチ:

  • MyClass[] arr = myList.toArray(new MyClass[myList.size()]);
  • MyClass[] arr = myList.toArray(new MyClass[0 ]);

2 番目のオプションは冗長ではありませんが、パフォーマンスの可能性について疑問が生じます。

ベンチマーク分析

パフォーマンスへの影響を判断するために、Hotspot 8 で JMH を使用してベンチマークが実施されました。その結果、空の配列を使用する方が一貫してサイズ変更よりも優れていることが明らかになりました。 array:

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.resize        100  avgt       30    0.133 ▒ 0.003  us/op
c.a.p.SO29378922.resize       1000  avgt       30    1.075 ▒ 0.022  us/op
...
ログイン後にコピー

説明

この直観に反する発見は、JVM および JIT コンパイラーによって採用された最適化に起因すると考えられます。これらの最適化により、ユーザー指定の次元を必要とせずに、正しいサイズの配列を効率的に作成および初期化できます。

推奨事項

ベンチマーク結果と分析に基づくと、次のようになります。使用をお勧めします:

MyClass[] arr = myList.toArray(new MyClass[0]);

これはパフォーマンスを向上させるだけでなく、配列作成などの一般的な操作を JVM に最適化させるという原則とも一致します。

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

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