分別用一千萬次循環來比較StringBuilder的三種刪除方法所用時間
未避免偶然性,再循環一百次來比較總時間
--主類
public class StringBuilderRemove {
public long newProject;//重新創建對象循環一千萬次所用時間
public long delete;//刪除字符串循環一千萬次所用時間
public long updateLength;//修改長度循環一千萬次所用時間
public void test() {
//第一種,新創建一個對象
long startTimeA = System.currentTimeMillis();
StringBuilder sb = null;
for (int i = 1; i <= 10000000; i++) {
sb = new StringBuilder();
sb.append("AAAAAAA");
sb.append("BBBBBBB");
sb.append("CCCCCCC");
sb.append("DDDDDDD");
sb.append("EEEEEEE");
sb.append("FFFFFFF");
sb.append("GGGGGGG");
String a = sb.toString();
}
this.newProject = System.currentTimeMillis() - startTimeA;//new新對象所花時間
//第二種,刪除字符串
long startTimeB = System.currentTimeMillis();
for (int i = 1; i <= 10000000; i++) {
sb.delete(0, sb.length());
sb.append("AAAAAAA");
sb.append("BBBBBBB");
sb.append("CCCCCCC");
sb.append("DDDDDDD");
sb.append("EEEEEEE");
sb.append("FFFFFFF");
sb.append("GGGGGGG");
String a = sb.toString();
}
this.delete = System.currentTimeMillis() - startTimeB;//刪除字符串所花時間
//第三種,設置長度
long startTimeC = System.currentTimeMillis();
for (int i = 1; i <= 10000000; i++) {
sb.setLength(0);
sb.append("AAAAAAA");
sb.append("BBBBBBB");
sb.append("CCCCCCC");
sb.append("DDDDDDD");
sb.append("EEEEEEE");
sb.append("FFFFFFF");
sb.append("GGGGGGG");
String a = sb.toString();
}
this.updateLength = System.currentTimeMillis() - startTimeC;//修改字符串長度所花時間
}
--測試類
public class Main {
public static void main(String[] args) {
StringBuilderRemove sbr = new StringBuilderRemove();
long a = 0;
long b = 0;
long c = 0;
for (int i = 0; i < 100; i++) {
sbr.test();
a += sbr.newProject;
b += sbr.delete;
c += sbr.updateLength;
}
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
運行結果:
168046
95123
93593
結論:可以明顯看出,重新創建對象的方法是最慢的,刪除字符串和設置長度的方法差別不大.