现在的位置: 首页 > 综合 > 正文

String,StringBuffer,StringBuilder性能分析

2016年01月22日 ⁄ 综合 ⁄ 共 1962字 ⁄ 字号 评论关闭
import java.text.SimpleDateFormat;
import java.util.Date;

/*功能:String,StringBufffer,StringBuilder性能分析
 *实现:循环执行前后分别记录系统时间,循环执行后计算循环执行时间
 *Date:2014-5-14	
 *Author:何龙
 *QQ:471628912
 */

public class StringTest {
	final static int time = 50000;// 测试循环次数

	// 熟练掌握日期处理
	public StringTest() {
		Date nowTime = new Date(System.currentTimeMillis());
		SimpleDateFormat tFormat = new SimpleDateFormat("yyyy-MM-dd");
		String time = tFormat.format(nowTime);
		System.out.println("系统当前时间为:" + time);
	}

	// 测试String类操作时所需时间
	public void test(String s) {
		long begin = System.currentTimeMillis();
		for (int i = 0; i < time; i++) {
			s += "add";
		}
		long over = System.currentTimeMillis();
		System.out.println("操作" + s.getClass().getName() + "类型使用的时间为"
				+ (over - begin) + "毫秒");
	}

	// 测试StringBuffer类操作所需时间
	public void test2(StringBuffer s) {
		long begin = System.currentTimeMillis();
		for (int i = 0; i < time; i++) {
			s.append("add");
		}
		long over = System.currentTimeMillis();
		System.out.println("操作" + s.getClass().getCanonicalName() + "类型使用的时间为:"
				+ (over - begin) + "毫秒");
	}

	//  测试StringBuilder类的操作所需时间
	public void test3(StringBuilder s) {
		long begin = System.currentTimeMillis();
		for (int i = 0; i < time; i++) {
			s.append("add");
		}
		long over = System.currentTimeMillis();
		System.out.println("操作" + s.getClass().getName() + "类型使用的时间为:"
				+ (over - begin) + "毫秒");
	}

	// 对String直接进行字符串拼接测试(包括操作引用和直接操作两种)
	public void test4() {
		String s2 = "abcd";
		long begin = System.currentTimeMillis();
		for (int i = 0; i < time; i++) {
			String s = s2 + s2 + s2;
		}
		long over = System.currentTimeMillis();
		System.out.println("操作字符串对象引用相加类型使用的时间为:" + (over - begin) + "毫秒");
	}

	public void test5() {
		long begin = System.currentTimeMillis();
		for (int i = 0; i < time; i++) {
			String s = "abcd" + "abcd" + "abcd";
		}
		long over = System.currentTimeMillis();
		System.out.println("操作字符串相加使用的时间为:" + (over - begin) + "毫秒");
	}

	public static void main(String args[]) {
		String s1 = "abcd";
		StringBuffer s2 = new StringBuffer("abcd");
		StringBuilder s3 = new StringBuilder("abcd");
		StringTest tt = new StringTest();
		System.out.println("计算String,StringBuffer,StringBuilder的时间需求:");
		tt.test(s1); // String操作
		tt.test2(s2);// StringBuffer操作
		tt.test3(s3);// StringBuilder操作
		tt.test4();// String引用
		tt.test5();// Sting直接相加
	}
}

测试结果:


抱歉!评论已关闭.