Попытка выяснить, что JVM (AdoptOpenJdk 1.8) делает за кулисами в этом сценарии. Представьте, что это выполняется один раз для каждого запроса API (например, через фильтр):
public boolean blah() {
return Optional.ofNullable(something()).orElseGet(() -> false);
}
Каковы последствия для производительности при использовании orElseGet(() -> false)
вместо orElse(false)
? Насколько я понимаю, JVM будет иметь одну анонимную функцию в куче в случае orElseGet(() -> false)
, которая потенциально будет использоваться повторно для каждого запроса, тогда как я ожидаю, что orElse(false)
добавит примитив false
в стек для каждого запроса. request.
Я не ожидаю, что какая-либо разница в производительности будет заметна, поэтому я пытаюсь понять, что на самом деле происходит за кулисами в JVM.
Вместо этого мотивация orElseGet(() -> false)
orElse(false)
означает полное удаление orElse
из базы кода, чтобы разработчики не использовали его неправильно (например, для дорогостоящей операции).