/* * Copyright (C) 2009-2016 Hangzhou 2Dfire Technology Co., Ltd.All rights reserved */package com.twofire.wechat.service;/** * StringCombineCostTimeTest * * @author shinan * @since 2017-03-03 */public class StringCombineCostTimeTest {    PRivate static String request = "request";    private static String result = "result";    public static void combineTimeCost(int count) {        combineByStringFormat(count);        combineByStringPlusOperator(count);        combineByStringBuilder(count);        combineByStringConcat(count);        System.out.println("---------------------------------------");    }    public static void combineByStringFormat(int count) {        long start = System.currentTimeMillis();        for (int i = 0; i< count;i++) {            String combineResult =  String.format("request = %s, result = %s", request, result);        }        long end = System.currentTimeMillis();        long cost = end - start;        System.out.println(count + " combine String.format cost : " + cost);    }    public static void combineByStringPlusOperator(int count) {        long start = System.currentTimeMillis();        for (int i = 0; i< count;i++) {            String combineResult = "request = " + request + " result = " + result;        }        long end = System.currentTimeMillis();        long cost = end - start;        System.out.println(count + " combine String add cost : " + cost);    }    public static void combineByStringBuilder(int count) {        long start = System.currentTimeMillis();        for (int i = 0; i< count;i++) {            StringBuilder stringBuilder = new StringBuilder();            stringBuilder.append("request = ").append(request).append(" result = ")                    .append(result);        }        long end = System.currentTimeMillis();        long cost = end - start;        System.out.println(count + " combine StringBuilder cost : " + cost);    }    public static void combineByStringConcat(int count) {        long start = System.currentTimeMillis();        for (int i = 0; i< count;i++) {            String str = "";            str.concat("request = ").concat(request).concat(" result = ").concat(result);        }        long end = System.currentTimeMillis();        long cost = end - start;        System.out.println(count + " combine Concat cost : " + cost);    }    public static void main(String[] args){        combineTimeCost(1000000);        combineTimeCost(1000000);        combineTimeCost(1000000);    }}耗時統計:String.format耗時最長concat中等,+和StringBuilder較為接近即時在做最簡單的拼接時,如果我們不想創建StringBuffer或StringBuilder實例的時候可以使用concat。但是對于大量的字符串拼接操作,我們就不應該使用concat,因為concat會降低程序的性能,消耗cpu。因此,在不考慮線程安全和同步的情況下,為了獲得最高的性能,我們應盡量使用StringBuilder
新聞熱點
疑難解答