Я хотел сравнить производительность циклов с потоками.Для этого я написал 2 метода.Оба отфильтровывают имена, начинающиеся с 'A', и возвращают их в виде строки.Если я сделаю это с 50 000 случайно сгенерированных имен, императив будет быстрее.Но если я сделаю это с 500 000 случайно сгенерированных имен, функциональный путь будет быстрее.
Мой вопрос: почему функциональная парадигма медленнее для небольших наборов данных и быстрее для больших наборов данных?Требуется ли много времени для инициализации потоков, но после этого они становятся более эффективными?
public String imperativeArray() {
String result = "";
for(String name : arraytestSet) {
if(name.startsWith("A")) {
if(result.isEmpty()) {
result += name;
} else {
result += "," + name;
}
}
}
return result;
}
public String functionalArray() {
return Arrays.stream(arraytestSet)
.filter(e -> e.startsWith("A"))
.collect(Collectors.joining(","));
}