Неужели Optional.orElseGet (false) хуже по производительности, чем Optional.orElse (false)? - PullRequest
1 голос
/ 27 января 2020

Попытка выяснить, что 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 из базы кода, чтобы разработчики не использовали его неправильно (например, для дорогостоящей операции).

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