Difference between StringBuilder and StringBuffer

后端 未结 30 2860
独厮守ぢ
独厮守ぢ 2020-11-21 15:06

What is the main difference between StringBuffer and StringBuilder? Is there any performance issues when deciding on any one of these?

30条回答
  •  庸人自扰
    2020-11-21 15:40

    Here is the performance testing result for String vs StringBuffer vs StringBuilder. Finally, StringBuilder won the Test. See below for test code and result.

    Code:

    private static void performanceTestStringVsStringbuffereVsStringBuilder() {
    // String vs StringBiffer vs StringBuilder performance Test
    
    int loop = 100000;
    long start = 0;
    
    // String
    String str = null;
    start = System.currentTimeMillis();
    for (int i = 1; i <= loop; i++) {
      str += i + "test";
    }
    System.out.println("String - " + (System.currentTimeMillis() - start) + " ms");
    
    // String buffer
    StringBuffer sbuffer = new StringBuffer();
    start = System.currentTimeMillis();
    for (int i = 1; i <= loop; i++) {
      sbuffer.append(i).append("test");
    }
    System.out.println("String Buffer - " + (System.currentTimeMillis() - start) + " ms");
    
    // String builder
    start = System.currentTimeMillis();
    StringBuilder sbuilder = new StringBuilder();
    for (int i = 1; i <= loop; i++) {
      sbuffer.append(i).append("test");
    }
    System.out.println("String Builder - " + (System.currentTimeMillis() - start) + " ms");
    
      }
    

    Execute Me on ideone

    Result:

    100000 iteration for adding a single text

    String - 37489 ms
    String Buffer - 5 ms
    String Builder - 4 ms
    

    10000 iteration for adding a single text

    String - 389 ms
    String Buffer - 1 ms
    String Builder - 1 ms
    

提交回复
热议问题