62,615
社区成员
发帖
与我相关
我的任务
分享
性能测试报告
(单位:纳秒)
+-----------+---------------+---------------+---------------+
| | char[] | StringBuilder | StringBuffer |
+-----+-----+---------------+---------------+---------------+
| | C | 164934 | 217095 | 449021 |
| A +-----+---------------+---------------+---------------+
| | S | -- | 488630 | 670028 |
+-----+-----+---------------+---------------+---------------+
| | C | -- | 454022 | 616225 |
| B +-----+---------------+---------------+---------------+
| | S | -- | 703524 | 862583 |
+-----+-----+---------------+---------------+---------------+
A -- 对容量进行初始化
B -- 未对容量进行初始化
C -- 采用 char 空格填充
S -- 采用 String 空格填充
public class Test {
public static void main(String[] args) {
long t0, t1;
String str = null;
final int COUNT = 10000;
t0 = System.nanoTime();
for(int i = 0; i < COUNT; i++) {
str = generateSpace(10000);
}
t1 = System.nanoTime();
System.out.println((t1 - t0) / (float)COUNT);
System.out.println(str.length());
}
}
public static String generateSpace(int count) {
if(count < 0) {
throw new IllegalArgumentException("count must be greater than or equal 0.");
}
char[] chs = new char[count];
for(int i = 0; i < count; i++) {
chs[i] = ' ';
}
return new String(chs);
}
public static String generateSpace(int count) {
if(count < 0) {
throw new IllegalArgumentException("count must be greater than or equal 0.");
}
// A 组初始化时给定 count,B 组初始化时不给定 count
StringBuilder sb = new StringBuilder(count);
for(int i = 0; i < count; i++) {
sb.append(' '); // C 组使用字符空格,S 组使用字符串空格
}
return sb.toString();
}
public class Test1 {
public static void main(String[] args) {
System.out.println("|" + generateSpace(5) + "|");
}
public static String generateSpace(int count) {
if(count < 0) {
throw new IllegalArgumentException("count must be great equal than 0.");
}
char[] chs = new char[count];
for(int i = 0; i < count; i++) {
chs[i] = ' ';
}
return new String(chs);
}
}