Re: [問題] 重複new StringBuilder 的效能問題
※ 引述《love112302 (小黑炭)》之銘言:
: 最近在寫一個程式,突然冒出來的疑問
: 如果我現在有一個迴圈
: String text = "abcd";
: for(int i = 0; i < 500000; i++){
: new StringBuilder(text).append(text).toString();
: }
:
: 跟
:
: StringBuilder sb = new StringBuilder();
: for(int i = 0; i < 500000; i++){
: sb.append(text).append(text).toString();
: sb.delete(0, sb.length());
: }
:
: 這樣子哪一個是比較好的寫法呢?
: 自己測試時間有時候第一個快 有時候第一個慢
: 不知道哪一個方法才是比較省能的寫法
先不管你的程式有沒有意義(我是看不出所以然啦 Orz)
我覺得以現在的軟硬體的進步程度
用時間來測試效能,除非你的測試資料十分巨大
又或著測試出來的時間有好幾個量級的差異(不要問我什麼是「量級」 XD)
不然實在沒有什麼特別的意義
更不用說那個神奇的 JIT 到底做了什麼手腳
(搜尋一下我前兩個月的翻譯文)
我建議你用 javap.exe 去回頭看你的程式碼
以那個結果來學理上的分析快慢比較有意義
: → qrtt1:第 2 個為什麼不是把 length 設成 0 就好? 05/12 21:29
: 不好意思,請問是要怎麼設成0呢?
: 剛開始用 StringBuilder 所以不太懂 QQ"
: 我用 sb.delete(0, sb.length());
: 的目的是把 sb 裡面的東西都清掉,這樣下次用到就是乾淨的sb
http://docs.oracle.com/javase/6/docs/api/java/lang/
StringBuilder.html#setLength(int)
API 應該講的很清楚了
Java method 命名的都還算完整清楚
光看名稱大抵上都能對應,尤其是這種 setter
--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.30.120
推
05/12 23:29, , 1F
05/12 23:29, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):