Как вызов метода влияет на производительность в Java? - PullRequest
10 голосов
/ 08 августа 2011

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

Ответы [ 3 ]

9 голосов
/ 08 августа 2011

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

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

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

4 голосов
/ 08 августа 2011

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

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

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

1 голос
/ 08 августа 2011

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

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

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

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