Я просматривал недавно добавленные функции, представленные на 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 sec)
Java 8 String Join 1340114
Tranditional 59785
String Builder Append 102807
Сложность - это o (n) - на самом деле это (n * Размер отдельной длины элемента)
Другие показатели производительности (память и т.д.) Я не измерил.
Мои вопросы:
- Что-то не так в моих измерениях (большую часть времени я верю в парней jdk).
- Какова цель добавления API-интерфейса объединения в класс String
- Есть ли какой-либо анализ производительности для Java 8?