Java 8:字符串连接操作对性能有重大影响
我正在浏览Java-8中引入的新添加的现有功能。新添加到 String 类中的一个简单功能对我而言非常有吸引力 - 这就是 String Join 方法。
例:
String.join(" ", "AZY","BAX"); // returns AZY BAX
出于好奇,我通过编写一个简单的java代码检查了此功能的性能(执行时间)
public static void main(String[] args) {
long start = System.nanoTime();
String abc= String.join(" ,"AZY","BAX" … // joining 1000 words of size 3 char;
long diff = System.nanoTime() - start;
System.out.println(" Java 8 String Join " + diff);
start = System.nanoTime();
abc= "AZY"+"BAX"+"CBA"+ … // adding 1000 word of size 3 char;
diff = System.nanoTime() - start;
System.out.println(" Tranditional " + diff);
start = System.nanoTime();
new StringBuilder().append("AZY").append("BAX").appe… // appending 1000 word of size 3 char;
diff = System.nanoTime() - start;
System.out.println(" String Builder Append " + diff);
}
结果对我来说并不那么令人兴奋(以neno秒为单位的时间)
Java 8 String Join 1340114
Tranditional 59785
String Builder Append 102807
复杂度为 o(n) – 事实上它是 (n * 单个元素长度的大小)
其他性能指标(内存等)我没有测量。
我的问题是:
- 我的测量有什么问题吗(大多数时候我相信jdk的人)
- 将“加入”API 添加到字符串类的目的是什么
- 有没有针对Java 8的性能分析可用