2012-04-29 6 views
1

Что более быстрое использование функций или использование статических методов в многопоточной программе? Пожалуйста, объясните, почему это происходит быстрее.?Функции Vs Статические методы

+4

Учитывая, что «функция» на самом деле не является термином, используемым на Java, вы должны уточнить свой вопрос. В идеальном случае приведу пример, демонстрирующий оба подхода. –

+1

Вы должны статические и нестатические методы. –

+1

думаю есть способ, не функция. –

ответ

2

Возможно, вы слышали, что «чистые функции» лучше подходят для многопоточности. Чистая функция часто может быть реализована как статический метод в Java, но она также может быть реализована как метод экземпляра. Главное, что при многопоточности всегда лучше, если у вас нет глобальных переменных, которые могут измениться. Поэтому, если у вас есть неизменный объект, это так же хорошо, как статический метод, реализующий чистую функцию.

10

Даже если существует разумная разница между двумя подходами (которые я серьезно сомневаюсь), вы никогда не должны проектировать свои программы на основе этого. Хороший дизайн должен (почти) никогда не быть принесен в жертву для достижения лучшей производительности. Потому что вы не выигрываете много, но теряете много.

+1

+1: Даже если вы обнаружите, что существует небольшая разница, вы можете быть разочарованы, обнаружив, что разница меняется по мере улучшения JVM. Это означает, что, если вы значительно измените свой дизайн, чтобы соответствовать ему, и обнаружите, что это на самом деле медленнее, это может быть разочаровывающим. Придерживайтесь того, что просто и понятно, и не беспокойтесь о каждой наносекунде, если вы не можете сказать, какая разница в бизнесе. –

+0

Полностью согласен. Решение static vs. instance должно быть сделано на основе того, принадлежит ли этот метод * логически * к конкретному экземпляру объекта или ко всем объектам определенного класса. Хотя может быть небольшое ограничение производительности (публичный неконфигурированный метод - это виртуальный вызов), его обычно можно игнорировать, плюс JVM становятся умнее и обрабатывают все более эффективно. Если такая разница действительно важна для вашего приложения, возможно, Java - это плохой выбор. –

Смежные вопросы