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直接相加 } }
测试结果: