лямбда-выражение в теле метода - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть такой метод

public void doThis(){
   Predicate<String> p = (arg) -> true;
   doThat(p);
}

Повлияет ли это на производительность по сравнению с использованием без лямбды?Можно ли сохранить это лямбда-выражение в качестве переменной экземпляра, чтобы сделать его лучше?

1 Ответ

0 голосов
/ 25 февраля 2019

вы можете увидеть производительность:

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 раз медленнее, чем анонимные классы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...