java關於StringBuffer和StringBuilder寫入檔案的效率問題

來源:互聯網
上載者:User

標籤:

   StringBuffer在儲存字元的時候,是有上限的,一旦達到上線就會出錯,自己在項目中遇到一個從資料庫中查詢資料,然後寫入到本地檔案中

,資料量大概有30萬條,此時的效率十分的低。下面是大致的類比該程式的代碼,項目代碼由於是銀行的項目,就不貼出來了。看下大致的類比代碼

 1 public class lis { 2  3     public static void main(String[] args) throws IOException { 4         File file1 = new File("D:\\io\\out.txt"); 5         BufferedWriter bw = new BufferedWriter(new FileWriter(file1)); 6         StringBuffer buffer = new StringBuffer("S|1|S0180||||"); 7  8         buffer.append("\r\n"); 9 10         List subList = new ArrayList();11         List listid = new ArrayList();12         long s= System.currentTimeMillis();13         //防止大於1萬條時出錯,迴圈處理14         for (int i = 0; i < 60; i++) {15             for(int k=0; k<5000; k++){16                 buffer.append("KKKKKKKKKKKKKKKKKKKKKKKKKK"+k);17                 buffer.append("\r\n");18             }19             bw.write(buffer.toString());20             bw.flush();21             buffer = new StringBuffer();22         }23         long e= System.currentTimeMillis();24         System.out.println(e-s);25         bw.close();26     }27 }

用時 第24行輸出結果為230~236之間。
下面把StringBuffer換成StringBuider

 1 package mosTest; 2  3 import java.io.BufferedWriter; 4 import java.io.File; 5 import java.io.FileWriter; 6 import java.io.IOException; 7 import java.text.SimpleDateFormat; 8 import java.util.ArrayList; 9 import java.util.Date;10 import java.util.List;11 12 13 14 public class lis {15 16     public static void main(String[] args) throws IOException {17         File file1 = new File("D:\\io\\out.txt");18         BufferedWriter bw = new BufferedWriter(new FileWriter(file1));19         //StringBuffer buffer = new StringBuffer("S|1|S0180||||");20         StringBuilder buffer = new StringBuilder("S|1|S0180||||");21 22         buffer.append("\r\n");23 24         List subList = new ArrayList();25         List listid = new ArrayList();26         long s= System.currentTimeMillis();27         //防止大於1萬條時出錯,迴圈處理28         for (int i = 0; i < 60; i++) {29             for(int k=0; k<5000; k++){30                 buffer.append("KKKKKKKKKKKKKKKKKKKKKKKKKK"+k);31                 buffer.append("\r\n");32             }33             bw.write(buffer.toString());34             bw.flush();35             //buffer = new StringBuffer();36             buffer = new StringBuilder();37         }38         long e= System.currentTimeMillis();39         System.out.println(e-s);40         bw.close();41     }42 }

  用時 第24行輸出結果為222~225之間。

  通過結果可以看到,最佳化的效果很是明顯,但是需要注意的是:

  StringBuilder要比StringBuffer效率要高,如果是單線程不需要考慮同步問題,則可以使用StringBuilder提高效率。

java關於StringBuffer和StringBuilder寫入檔案的效率問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.