toArray(new MyClass[0]) 或 toArray(new MyClass[myList.size()]) 效能影響
轉換時ArrayList到數組,開發者可以選擇兩種方法:
而第二個選項則較不冗長,它提出了有關可能的效能考慮因素的問題。
基準分析
為了確定效能影響,在 Hotspot 8 上使用 JMH 進行了基準測試。結果顯示,使用空數組總是優於調整數組大小:
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中文網其他相關文章!