toArray(new MyClass[0]) または toArray(new MyClass[myList.size()]) パフォーマンスへの影響
ArrayList を配列に変換する場合、開発者は 2 つのうちのいずれかを選択できます。アプローチ:
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 サイトの他の関連記事を参照してください。