Как вызов метода влияет на производительность Java?

Мне нравится писать действительно читаемый код на Java. Для этого я использую шаблон строителя и много статических методов. Но в какой-то момент я звоню или цепляю много методов, поэтому я придумал этот вопрос: есть ли какие-либо проблемы с производительностью, вызывающие множество методов?

Ответ 1

Что делает метод, имеет гораздо больший эффект, чем сам вызов метода. Это предварительная зрелая оптимизация, которую вам следует избегать.

Вы понятия не имеете, как оптимизация времени выполнения, встроенная в JVM, будет влиять на производительность. Они будут намного умнее ваших попыток.

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

Ответ 2

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

Используйте ключевое слово final, где это необходимо, чтобы предлагать inlineing для этих функций.

Ситуация, когда вы не хотите использовать много вызовов функций, - это тесные циклы. Что-то, что происходит сотни тысяч раз. И обычно эти места могут быть оптимизированы в конце, если требуется оптимизация программного обеспечения.

Ответ 3

Вообще говоря: не совсем.

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

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