/* * 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
新闻热点
疑难解答