StringBuild 与 String 进行字符串相加性能比较
2017-06-10 23:11
302 查看
package com.company; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) { int n = 1000; long start = System.currentTimeMillis(); try { TimeUnit.SECONDS.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } List<String> list = new ArrayList<>(); String s = ""; for (int i = 0; i < n; i++) { s += i; list.add(s); } System.out.println(list.get(0) == list.get(1)); //false long end = System.currentTimeMillis(); System.out.println("String [" + (end - start) + "ms]"); try { TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } StringBuilder sb = new StringBuilder(); List<StringBuilder> listSb = new ArrayList<>(); start = System.currentTimeMillis(); for (int i = 0; i < n; i++) { sb.append(i); listSb.add(sb); } System.out.println(listSb.get(0) == listSb.get(1)); //true end = System.currentTimeMillis(); System.out.println("StringBuilder [" + (end - start) + "ms]"); try { TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } //速度 10000 300:1 // 100000 23847ms:4ms // 1000000 执行好久:107ms //因为 string在新加的时候会new String()操作 秒升500M内存 //从堆可以查看出来 // StringBuild 每一次增加的时候是内存之间的拷贝 // 源码 System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin); } }
相关文章推荐
- String.valueOf和字符串直接相加的性能比较
- 如何在Java中进行字符串(String)比较
- String、StringBuffer、Stringbuild区别、性能比较
- String的substring、split, StringTokenizer 截取字符串性能比较
- java中字符串的比较,必须使用string1.equals(string2)来进行判断
- 对几种获取字符串长度的方法进行性能比较
- String的substring、split, StringTokenizer 截取字符串性能比较
- 什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append方法连接字符串性能更好?
- 什么情况下用“+”运算符进行字符串连接比调用StringBuffer/StringBuilder 对象的append方法连接字符串性能更好?
- 什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append方法连接字符串性能更好?
- java中string字符串拼装性能比较
- json工具性能比较:json-lib和jackson进行Java对象到json字符串序列化[转]
- 常用String字符串拼接的性能比较与分析
- json-lib和jackson进行Java对象到json字符串序列化性能比较
- 关于Hashtable与ArrayList存储string的性能比较
- Speed up string comparison,加快比较字符串
- .NET Framework中StringBuilder与string的性能比较
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 再谈两种不同字符串比较方法的性能对比
- 两种不同字符串比较方法的性能对比