StringBuilder用不好的话 和加号没区别不知道这位兄台有没有这几试过一下的这段代码?? String s = "1"; long start = System.currentTimeMillis(); for (int i=0;i<10000;i++) { s += i; } long end = System.currentTimeMillis(); System.out.println("cost:" + (end - start));
//*********** StringBuilder builder = new StringBuilder(); builder.append("1"); start = System.currentTimeMillis(); for (int i=0;i<10000;i++) { builder.append(i); } end = System.currentTimeMillis(); System.out.println("cost:" + (end - start));
StringBuilder用不好的话 和加号没区别不知道这位兄台有没有这几试过一下的这段代码?? String s = "1"; long start = System.currentTimeMillis(); for (int i=0;i<10000;i++) { s += i; } long end = System.currentTimeMillis(); System.out.println("cost:" + (end - start));
//*********** StringBuilder builder = new StringBuilder(); builder.append("1"); start = System.currentTimeMillis(); for (int i=0;i<10000;i++) { builder.append(i); } end = System.currentTimeMillis(); System.out.println("cost:" + (end - start)); 不知道这位老兄知不知道java会把加号编译成stringbuilder 除了循环里的
StringBuilder用不好的话 和加号没区别不知道这位兄台有没有这几试过一下的这段代码?? String s = "1"; long start = System.currentTimeMillis(); for (int i=0;i<10000;i++) { s += i; } long end = System.currentTimeMillis(); System.out.println("cost:" + (end - start));
StringBuilder用不好的话 和加号没区别不知道这位兄台有没有这几试过一下的这段代码?? String s = "1"; long start = System.currentTimeMillis(); for (int i=0;i<10000;i++) { s += i; } long end = System.currentTimeMillis(); System.out.println("cost:" + (end - start));
StringBuilder用不好的话 和加号没区别
StringBuilder用不好的话 和加号没区别
StringBuilder 还需要中么用 ?
StringBuilder用不好的话 和加号没区别
StringBuilder 还需要中么用 ?需要预先考虑好长度 创建的时候分配好 否则默认就是16个字符 不够就扩容 扩容浪费的资源和加号是一样的
按Java代码规范写就可以
如果关注性能 就用 StringBuild 或 StringBuffer
StringBuilder用不好的话 和加号没区别不知道这位兄台有没有这几试过一下的这段代码?? String s = "1";
long start = System.currentTimeMillis();
for (int i=0;i<10000;i++) {
s += i;
}
long end = System.currentTimeMillis();
System.out.println("cost:" + (end - start));
//***********
StringBuilder builder = new StringBuilder();
builder.append("1");
start = System.currentTimeMillis();
for (int i=0;i<10000;i++) {
builder.append(i);
}
end = System.currentTimeMillis();
System.out.println("cost:" + (end - start));
StringBuilder用不好的话 和加号没区别不知道这位兄台有没有这几试过一下的这段代码?? String s = "1";
long start = System.currentTimeMillis();
for (int i=0;i<10000;i++) {
s += i;
}
long end = System.currentTimeMillis();
System.out.println("cost:" + (end - start));
//***********
StringBuilder builder = new StringBuilder();
builder.append("1");
start = System.currentTimeMillis();
for (int i=0;i<10000;i++) {
builder.append(i);
}
end = System.currentTimeMillis();
System.out.println("cost:" + (end - start));
不知道这位老兄知不知道java会把加号编译成stringbuilder 除了循环里的
StringBuilder用不好的话 和加号没区别不知道这位兄台有没有这几试过一下的这段代码?? String s = "1";
long start = System.currentTimeMillis();
for (int i=0;i<10000;i++) {
s += i;
}
long end = System.currentTimeMillis();
System.out.println("cost:" + (end - start));
//***********
StringBuilder builder = new StringBuilder();
builder.append("1");
start = System.currentTimeMillis();
for (int i=0;i<10000;i++) {
builder.append(i);
}
end = System.currentTimeMillis();
System.out.println("cost:" + (end - start));
不知道这位老兄知不知道java会把加号编译成stringbuilder 除了循环里的 循环里的会每次就new一个stringbuilder 慢的原因是在这里 所以在循环外加号和stringbuilder是一样的 但是如果设置定长 要更优
StringBuilder用不好的话 和加号没区别不知道这位兄台有没有这几试过一下的这段代码?? String s = "1";
long start = System.currentTimeMillis();
for (int i=0;i<10000;i++) {
s += i;
}
long end = System.currentTimeMillis();
System.out.println("cost:" + (end - start));
//***********
StringBuilder builder = new StringBuilder();
builder.append("1");
start = System.currentTimeMillis();
for (int i=0;i<10000;i++) {
builder.append(i);
}
end = System.currentTimeMillis();
System.out.println("cost:" + (end - start));
不知道这位老兄知不知道java会把加号编译成stringbuilder 除了循环里的 循环里的会每次就new一个stringbuilder 慢的原因是在这里 所以在循环外加号和stringbuilder是一样的 但是如果设置定长 要更优
-去看了哈javap,虽然很多指令看不懂,但循环上大体还是看明白了,确如兄台所言,s+的循环中是每次都new一个StringBuilder.. 并且用笨办法在循环外粘贴了几千行s+来做测试,和循环外的StringBuilder.append确实相差不多.. 今天小弟又涨见识了,多谢。
至于什么StringBuilder扩容性能损耗的问题,我只想说你以为操作内存慢得和磁盘IO一样?真正慢的是太多新对象的创建和垃圾回收,只要你能减少创建不必要的中间对象就能提高性能。