[問題] string串接問題
想請問不同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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.15.41.20 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/java/M.1701398874.A.F9C.html
※ 編輯: a89051236 (39.15.41.20 臺灣), 12/01/2023 10:48:43
※ 編輯: a89051236 (39.15.41.20 臺灣), 12/01/2023 10:49:50
→
12/01 11:54,
11月前
, 1F
12/01 11:54, 1F
→
12/01 11:55,
11月前
, 2F
12/01 11:55, 2F
→
12/01 11:55,
11月前
, 3F
12/01 11:55, 3F
→
12/01 12:00,
11月前
, 4F
12/01 12:00, 4F
→
12/01 12:00,
11月前
, 5F
12/01 12:00, 5F
→
12/01 12:01,
11月前
, 6F
12/01 12:01, 6F
→
12/01 12:05,
11月前
, 7F
12/01 12:05, 7F
→
12/01 13:12,
11月前
, 8F
12/01 13:12, 8F
推
12/02 01:36,
11月前
, 9F
12/02 01:36, 9F
推
12/02 01:53,
11月前
, 10F
12/02 01:53, 10F
推
12/02 21:26,
11月前
, 11F
12/02 21:26, 11F
推
12/07 14:17,
11月前
, 12F
12/07 14:17, 12F
推
01/02 13:19,
1年前
, 13F
01/02 13:19, 13F
推
03/20 18:00,
1年前
, 14F
03/20 18:00, 14F
推
06/06 08:43,
1年前
, 15F
06/06 08:43, 15F
→
06/06 08:43,
1年前
, 16F
06/06 08:43, 16F
java 近期熱門文章
PTT數位生活區 即時熱門文章