我想为基准创建1MB字符串,所以我编写了如下代码:
public final static long KB = 1024;
public final static long MB = 1024 * KB;
public static void main(String[] args){
String text_1MB=createString(1*MB);
}
static String createString(long size){
StringBuffer o=new StringBuffer();
for(int i=0;i<size;i++){
o.append("f");
}
return o.toString();
}
我觉得这个方法createString
不好而且很愚蠢
是否有想法优化createString
方法?
答案 0 :(得分:16)
怎么样:
char[] chars = new char[size];
// Optional step - unnecessary if you're happy with the array being full of \0
Arrays.fill(chars, 'f');
return new String(chars);
答案 1 :(得分:9)
您可以简单地创建一个大字符数组。
char[] data = new char[1000000];
如果你需要制作一个真正的String
对象,你可以:
String str = new String(data);
答案 2 :(得分:3)
char[] s = new char[1024 * 1000];
String str = String.copyValueOf(s);
答案 3 :(得分:2)
创建一个字符数组并使用new String(char[])
构造函数。
答案 4 :(得分:0)
如何使用StringBuilder类而不是StringBuffer? StringBuilder应该更快,因为它不像StringBuffer那样是同步的。
也许您可以通过设置编译器标志来增加堆内存和虚拟内存来提高性能。它肯定不会受到伤害。
答案 5 :(得分:0)
使用StringBuilder并设置容量:
static String createString(long size){
StringBuilder o=new StringBuilder(size);
for(int i=0;i<size;i++){
o.append("f");
}
return o.toString();
}
答案 6 :(得分:0)
new String(ByteBuffer.allocate(1024).array());
分配一个1024字节的ByteBuffer,然后从其支持数组中构造新的String。