想請問不同string串接方法的效能比較。
我寫了以下的方式(請詳下圖)來測試各種寫法的效能(耗時),
目前從結果來看是A迴圈優於B優於C優於D(但秒數會浮動,不知是否有更好的測試方法?
)
我已經知道各迴圈差異大概如下:
A迴圈因為是常量會在compile時就處理,故runtime時不用再做處理。
C迴圈因為用StringBuffer串接時不會再new物件故效能優於D迴圈。
D迴圈因為string是immutable object,因此在a=a+b時會修改a在記憶體中的位置,故比C
迴圈耗效能。
但應該如何看B迴圈呢?
a+b沒有指定給任何field,那系統是否會在記憶體中分配一個新的位置給(a+b)?如同new
一個物件一樣會耗效能。
另外是否有方法可以測試或判斷是否有在記憶體中分配新位置?
再麻煩,謝謝
https://i.imgur.com/XgTiMTk.jpg