Лямбда против анонимной производительности внутреннего класса: снижение нагрузки на ClassLoader?

Я хотел бы знать, насколько велико преимущество лямбды в Java 8. Я согласен, что иногда использование лямбды может быть более читабельным, но действительно ли это так сильно влияет на производительность? Или это в основном сфокусировано как синтаксический сахар? Я иногда предпочитаю анонимные внутренние классы; я действительно теряю много преимуществ, когда я не использую лямбду все время?

Единственный? Большой? мне кажется, что прирост производительности заключается в том, что мы не создаем классы, которые загрузчик классов должен загружать в начале программы, например, создавая множество потоков:

Thread t = new Thread(new Runnable() {
   public.....
});

создает классы как Sample$1.class,

Кроме этого, есть ли какая-либо производительность или другие скрытые преимущества, помимо читабельности, удобства обслуживания и т. Д. Кода? Где-то спрятан в JVM? Я видел подобные вопросы, но большинство из них были сосредоточены на визуальной стороне; Я не заинтересован в этом. Вопрос из любопытства после просмотра взлома Java 8 Lambdas с Venkat Subramaniam.

2 ответа

Решение

У Oracle есть презентация, охватывающая некоторые различия в производительности. Похоже, что существует довольно много факторов, которые влияют на производительность лямбда-классов против анонимных классов.

http://www.oracle.com/technetwork/java/jvmls2013kuksen-2014088.pdf

После прочтения PDF, связанного с @Brett Okken, я считаю, что верно следующее:

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

Я буду придерживаться следующего:

  • Используйте Lambdas для удобства чтения, когда потеря производительности на несколько миллисекунд не является проблемой (GUI и т. Д.)
  • Используйте внутренние классы для часто вызываемых, критичных к производительности функций.
Другие вопросы по тегам