Выполняется ли Lambda медленнее, чем реализованные методы в java 8? [Дубликат]

По умолчанию Azure Database for MySQL применяет SSL-соединения между вашим сервером и вашими клиентскими приложениями для защиты от атак MITM (человек в середине). Это делается для обеспечения максимально возможного безопасного подключения к вашему серверу.

Хотя вы не рекомендуем, вы можете отключить требование SSL для подключения к вашему серверу, если ваше клиентское приложение не поддерживает подключение SSL. Пожалуйста, проверьте , как настроить SSL-соединение для вашего сервера MySQL в Azure для получения более подробной информации. Вы можете отключить требуемые SSL-соединения с портала или с помощью CLI. Обратите внимание, что Azure не рекомендует отключать подключение SSL при подключении к вашему серверу.

42
задан csvan 20 June 2014 в 09:30
поделиться

2 ответа

Oracle опубликовала исследование, сравнивающее производительность между Lambdas и анонимными классами

См. JDK 8: Исследование производительности лямбда Сергея Куксенко, которое составляет 74 слайда.

Краткое описание: медленное прогревание, но когда JIT строит его в худшем случае так же быстро, как анонимный класс, но может быть быстрее.

70
ответ дан user2864740 22 August 2018 в 02:35
поделиться
  • 1
    Кажется, это слайды, а не страницы. Хорошая находка. – csvan 18 June 2014 в 22:02
  • 2
    @ user2864740 добавил 1 предложение резюме, извините, потребовалось время, чтобы прочитать все слайды – dkatzel 18 June 2014 в 22:08

Как я нашел, итерация по массиву с помощью Stream работает намного медленнее (74 слайда не учитывают такой случай). Я думаю, что это не единственная утечка производительности в лямбдах (предположим, в будущем она будет улучшена). Пример ниже выполнялся с Java 8 без каких-либо параметров:

    //Language is an enum 
    Language[] array = Language.values();
    System.err.println(array.length); // 72 items
    long t = System.nanoTime();
    for (Language l : array) System.out.println(l.getLanguageName());
    System.err.println(System.nanoTime()-t); //nano time  1864724

    t = System.nanoTime();
    Arrays.stream(array).forEach(v -> System.out.println(v.getLanguageName()));
    System.err.println(System.nanoTime()-t); //nano time 55812625 (55812625/1864724 = 29.93 times longer)

    List<Language> list = Arrays.asList(array);

    t = System.nanoTime();
    for (Language l : list) System.out.println(l.getLanguageName());
    System.err.println(System.nanoTime()-t); //nano time 1435008

    t = System.nanoTime();
    list.forEach(v -> System.out.println(v.getLanguageName()));
    System.err.println(System.nanoTime()-t); //nano time 1619973 (1619973/1435008 = 1.128 times longer)
-3
ответ дан Arseny 22 August 2018 в 02:35
поделиться
  • 1
    Вы смешиваете свои сравнения. Вопрос касался анонимных классов vs lambdas, но вы сравниваете их для циклов и потоков. – Coeffect 26 October 2016 в 21:43
Другие вопросы по тегам:

Похожие вопросы: