字符串拼接效率

public class StringJoinPerformance {
	public static void main(String[] args) {

		int loop = 10000000;

		String name = "illusion";
		String sex = "男";
		int age = 18;
		String birthday = "2015-01-01";
		String profile = "由于这个原因,ClearQuest测试管理的管理人员会创建一个轮廓并将它分配到最终的用户,这样他们就安装单个的客户端。";

		System.out.println("方式1");

		long startTime = System.currentTimeMillis();
		for(int i=0;i<loop;i++){
			String temp = "<user><name>"+ name +"</name><sex>"+ sex +"</sex><age>"+ (age+i) +"</age><birthday>"+ birthday +"<birthday><profile>"+ profile +"</profile></user>";
		}
		long endTime = System.currentTimeMillis();
		System.out.println("cost:" + (endTime-startTime));

		System.out.println("方式2");
		startTime = System.currentTimeMillis();
		for(int i=0;i<loop;i++){
			String temp = String.format("<user><name>%s</name><sex>%s</sex><age>%s</age><birthday>%s<birthday><profile>%s</profile></user>", name, sex, (age+i), birthday, profile);
		}
		endTime = System.currentTimeMillis();
		System.out.println("cost:" + (endTime-startTime));

		System.out.println("方式3");
		startTime = System.currentTimeMillis();
		for(int i=0;i<loop;i++){
			StringBuffer sb = new StringBuffer();
			String temp = sb.append("<user><name>").append(name).append("</name><sex>").append(sex).append("</sex><age>").append(age+i).append("</age><birthday>").append(birthday).append("<birthday><profile>").append(profile).append("</profile></user>").toString();
		}
		endTime = System.currentTimeMillis();
		System.out.println("cost:" + (endTime-startTime));		

	}
}

时间: 2024-10-25 08:43:12

字符串拼接效率的相关文章

.NET中string与StringBuilder在字符串拼接功能上的比较

来自森大科技官方博客 http://www.cnsendblog.com/?p=86 .NET中string与StringBuilder在字符串拼接功能上的比较string与StringBuilder的在字符串拼接时执行效率上有差异,因为StringBuilder类中用了一个技巧:它申请了两倍的内存空间存放字符串,在调用Append方法拼接字符串时,会先检查剩余的空间是否能放下要拼接的字符串,若能放下,则将要拼接的字符串Copy到剩余的空间中,若不能放下,则再申请拼接后的字符串两倍的长度空间,将

C#三种字符串拼接方法的效率对比

C#字符串拼接的方法常用的有:StringBuilder.+.string.Format.List<string>.使用情况不同,效率不同. 1.+的方式 string sql = "update tableName set int1=" + int1.ToString() + ",int2=" + int2.ToString() + ",int3=" + int3.ToString() + " where id="

测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率

之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简单的测试吧: public static void main(String[] args) { testStringJoin(); } static void testStringJoin() { long beg = System.currentTimeMillis(); String s = null;

C#的StringBuilder 以及string字符串拼接的效率对照

今天公司一个做Unity3d的人在说字符串拼接的一个效率问题,他觉得string拼接会产生新的一个内存空间,假设不及时回收会产生大量的碎片,特别是在Unity3d这样一个Updata环境下,由于每一帧都会调用,所以假设使用简单的拼接的话,就会产生非常多碎片,从而影响手机发热. 他的想法是用StringBuilder去直接改动内存,而不进行一个拼接会更加直接有效的去运行,速度也会更快. 由于认为这个东西有点意思,所以我就想做个对照来看,是不是自己老了记错了事情,特别是我是做服务端的,效率才是我考虑

【转】Java 5种字符串拼接方式性能比较。

最近写一个东东,可能会考虑到字符串拼接,想了几种方法,但对性能未知,于是用Junit写了个单元测试. 代码如下: import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestS

字符串拼接性能优化

var htmlString = '<div class="container">' + '<ul id="news-list">', for (var i = 0; i < NEWS.length; i++) { htmlString += '<li><a href="'+NEWS[i].LINK +'">' + NEWS[i].TITLE + '</a></li>'

python中字符串拼接

python中字符串拼接的三种方式: 1.使用 '+': 这中方式会在内存中,没使用一次就开辟一个新的空间,不建议使用.当数据庞大时候效率很低.后期有垃圾回收机制来处理没有用的字符串 案例:name = 'jam' name1 = name + 'c'这样内存中会开辟一个空间存放 name2 = name1 + 'h''这样内存中会再开辟一个空间存放 2.字符串格式化的形式:%s,这中方式让内存最多就开辟两个空间来进行存放字符. 案例:name = 'jam' name2 = 'chen' se

MapReduce中使用字符串拼接导致的问题

今天在帮业务方优化mapreduce作业时遇到一个用字符串拼接的问题. reduce中字符串拼接代码: while (it.hasNext()) { line = it.next().toString(); artID+=line+","; ct++; } 采用的是String直接拼接,结果是该作业作业只剩一个reduce一直在运行,而且时间长达6小时,其他已经完成的reduce只用了10多分钟. 咨询了一下业务方,artID有的会很长,这个时候会一直进行字符串拼接. 我又看了一下未完

js字符串拼接优化

js字符串拼接的两种写法 第一种写法; 1 var html = ''; 2 3 for(var i = 0 ; i< 100000; i++){ 4 html += i + ','; 5 } 6 7 document.write(html); 第二种写法: var html = []; for(var i = 0 ; i< 100000; i++){ html.push( i ); } document.write(html.join(',')); 第二种的效率远高于第一种;