Re: [翻譯] 拆穿 Java StringBuilder 的謠言

看板java作者 (CHA)時間11年前 (2013/04/02 00:16), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串4/8 (看更多)
※ 引述《cyclone350 (老子我最神)》之銘言: : 如果你的程式碼長這樣 : String str = ''; : while(i < 100000) { : str += 'a'; : } : jdk 會把迴圈解釋成像這樣 : while(i < 100000) { : str = new StringBuilder(str).append('a'); : } 部份43 那麼像這樣的程式碼呢? //******start******// String str = ""; if (condition1) { str += "someString1"; } if (condition2) { str += "someString2"; } ... ..(中間依此類推) ... if (conditionN) { str += "someStringN"; } System.out.println(str); //*******end*******// (厄 我想這不需要註解吧?) 在這個case中 萬一所有condition都為true 那是不是就會宣告出N個StringBuilder 導致performance較差呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.217.52

04/02 00:19, , 1F
我的理解是:yes !
04/02 00:19, 1F

04/02 00:21, , 2F
我比較擔心有那裏誤解 或者其實我和你的case在哪有差
04/02 00:21, 2F

04/02 00:26, , 3F
可以想像在大部分的情況jdk是直接用new builder替換的
04/02 00:26, 3F

04/02 00:28, , 4F
我想用 javap 去驗證比猜測可靠 XD
04/02 00:28, 4F

04/02 03:32, , 5F
剛忙完 接著連假 先欠著 我之後試試看...
04/02 03:32, 5F

04/02 03:35, , 6F
唔 下面有大大替我解答了@@a
04/02 03:35, 6F
文章代碼(AID): #1HMRBbSY (java)
討論串 (同標題文章)
文章代碼(AID): #1HMRBbSY (java)