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