java-字符串拼接幾種方法的性能比較

java-字符串拼接幾種方法的性能比較

一、測試方法:
String.format();
MessageFormat.format();
StringBuilder();

二、測試結果:
性能:StringBuilder > MessageFormat > String

三、運行結果:
++++++++++++++++++++++++
times=100000
String.format 耗時:660
MessageFormat.format 耗時:247
StringBuilder 耗時:4
++++++++++++++++++++++++
times=1000000
String.format 耗時:2128
MessageFormat.format 耗時:829
StringBuilder 耗時:7
++++++++++++++++++++++++
times=10000000
String.format 耗時:13809
MessageFormat.format 耗時:5823
StringBuilder 耗時:77

四、測試代碼:

public static void main (String[] args){
    int[] arr = new int[]{100000,1000000,10000000};
    long begin=0;
    long end=0;
    for(int item:arr){
        System.out.println("++++++++++++++++++++++++");
        System.out.println("times="+item);
        //String.format
        begin = System.currentTimeMillis();
        for(int i=0;i<item;i++){
            String s = String.format("%s,%s,%s,%s","1111","2222","3333","4444");
        }
        end = System.currentTimeMillis();
        System.out.println("String.format 耗時:"+(end-begin));

        //MessageFormat
        begin = System.currentTimeMillis();
        for(int i=0;i<item;i++){
            String s = MessageFormat.format("{0},{1},{2},{3}","1111","2222","3333","4444");
        }
        end = System.currentTimeMillis();
        System.out.println("MessageFormat.format 耗時:"+(end-begin));

        //stringformat
        begin = System.currentTimeMillis();
        StringBuilder sbd;
        for(int i=0;i<item;i++){
            sbd = new StringBuilder();
            String s = sbd.append("1111").append(",")
                    .append("2222").append(",")
                    .append("3333").append(",")
                    .append("4444").toString();
        }
        end = System.currentTimeMillis();
        System.out.println("StringBuilder 耗時:"+(end-begin));
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章