Благодаря @ventiseis:
Возврат объекта
(аналогично примитиву возвращается ireturn , lreturn , freturn и dreturn )
Если исключение не выдается, значение извлекается из стека операндов текущего кадра (§2.6) и помещается встек операндов фрейма вызывающего.Любые другие значения в стеке операндов текущего метода отбрасываются.
void return
Если не генерируется исключение, любые значения вСтек операндов текущего кадра (§2.6) отбрасывается.
В спецификации указано, что:
Если возвращено значение, оно извлекается из стека операндови помещается в стек операндов вызывающего фрейма.
Если значение не возвращается, ничего нельзя вытолкнуть или вытолкнуть.
Таким образомвозврат значения не должен быть более эффективным.
Конечно, этот ответ не учитывает оптимизацию, если возвращаемое значение не используется в вызывающем фрейме.