вы можете увидеть производительность:
public static void main(String[] args) {
System.out.println("Predicate using Lamda");
System.out.println(System.currentTimeMillis());
doThis();
System.out.println(System.currentTimeMillis());
System.out.println("Predicate using Without Lamda");
System.out.println(System.currentTimeMillis());
doThisWithoutLamda();
System.out.println(System.currentTimeMillis());
System.out.println("Predicate using Lamda 100000");
System.out.println(System.currentTimeMillis());
for (int i = 0; i < 100000; i++) {
doThis();
}
System.out.println(System.currentTimeMillis());
System.out.println("Predicate using Without Lamda 100000");
System.out.println(System.currentTimeMillis());
for (int i = 0; i < 100000; i++) {
doThisWithoutLamda();
}
System.out.println(System.currentTimeMillis());
}
public static void doThis() {
Predicate<String> p = (arg) -> true;
}
public static void doThisWithoutLamda() {
Predicate<String> p = new Predicate<String>() {
@Override
public boolean evaluate(String object) {
return true;
}
};
}
Вывод:
Predicate using Lamda
1551087600419
1551087600491
Predicate using Without Lamda
1551087600491
1551087600492
Predicate using Lamda 100000
1551087600492
1551087600496
Predicate using Without Lamda 100000
1551087600496
1551087600500
Java лямбды в 20 раз медленнее, чем анонимные классы