首頁  >  文章  >  Java  >  `toArray(new MyClass[0]) 與 toArray(new MyClass[myList.size()]):哪個效能比較好?

`toArray(new MyClass[0]) 與 toArray(new MyClass[myList.size()]):哪個效能比較好?

DDD
DDD原創
2024-11-24 17:28:13426瀏覽

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

toArray(new MyClass[0]) 或 toArray(new MyClass[myList.size()]) 效能影響

轉換時ArrayList到數組,開發者可以選擇兩種方法:

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

而第二個選項則較不冗長,它提出了有關可能的效能考慮因素的問題。

基準分析

為了確定效能影響,在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn