程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 測試一下StringBuffer和StringBuilder及字面常量拼接三種字符串的效率,bufferbuilder

測試一下StringBuffer和StringBuilder及字面常量拼接三種字符串的效率,bufferbuilder

編輯:JAVA綜合教程

測試一下StringBuffer和StringBuilder及字面常量拼接三種字符串的效率,bufferbuilder


之前一篇裡寫過字符串常用類的三種方式《java中的字符串相關知識整理》,只不過這個只是分析並不知道他們之間會有多大的區別,或者所謂的StringBuffer能提升多少拼接效率呢?為此寫個簡單的測試吧:

 

public static void main(String[] args) {
        testStringJoin();
    }

    static void testStringJoin() {
        
        long beg = System.currentTimeMillis();
        String s = null;
        for (int i = 0; i < 100000; i++) {
            s += "ss";
        }
        
        System.out.println("使用+拼接耗時:" + (System.currentTimeMillis() - beg));
        
        beg = System.currentTimeMillis();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < 100000; i++) {
            sb.append("ss");
        }
        System.out.println("使用StringBuffer拼接耗時:" + (System.currentTimeMillis() - beg));
        
        beg = System.currentTimeMillis();
        StringBuilder sbuilder = new StringBuilder();
        for (int i = 0; i < 100000; i++) {
            sbuilder.append("ss");
        }
        System.out.println("使用StringBuilder拼接耗時:" + (System.currentTimeMillis() - beg));
        
    }
    

代碼非常簡單,分別用三種方式拼接字符串10萬次,然後計算耗時情況,跑下來還是蠻驚人的:

使用+拼接耗時:9102
使用StringBuffer拼接耗時:3
使用StringBuilder拼接耗時:2

使用+拼接耗時:8956
使用StringBuffer拼接耗時:5
使用StringBuilder拼接耗時:3

兩組跑來的數據,大的數據相差不大,而且表現的結果也是一致的。這裡可以看到使用+這種常量拼接對性能消耗極大,10萬次用時9000ms,而StringBuffer和StringBuilder只用了不到5ms。看來一個簡單的字符串拼接還是要重視的,之前沒想到會有這麼誇張的體現。

至於StringBuffer和StringBuilder來說差別不是特別大,更多的還是考慮線程安全就可以了,也就是說用StringBuffer是種比較保險的方式吧,除非對性能有極高的要求。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved