2012-04-09 3 views
0

Есть ли разница в производительности среды выполнения между общедоступными и частными переменными/методами?Производительность в режиме реального времени Public vs Private в Java

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

+0

№ Нет, и Нет. Потому что я должен напечатать 15 символов. –

ответ

1

Как и большинство из этих вопросов, я бы сказал; написать четкий, простой код, и он будет хорошо работать.

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

Часто «причина производительности», это повод, чтобы писать неясный код, когда на самом деле это может быть не быстрее, или даже может быть намного медленнее (как путает JVM оптимизатор, так же, как это смутит вас)

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

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

+0

Спасибо за ответ. Я хотел иметь возможность принимать обоснованные решения при написании программы. Мне было интересно, может ли это повлиять на сбор мусора и т. Д. – Jamie

+0

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

+0

Вкратце с 12-летним опытом настройки Java-приложений, я все равно не буду полагаться на свои догадки относительно того, что сделает программу быстрее. Я предполагаю, что тестировать дальше, но я все еще проверяю его несколькими разными способами, чтобы быть уверенным, что у меня есть правильный подход. –

0

Я не думаю, что есть прямо. Модификаторы доступа в любом случае являются скорее компиляцией.

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

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

+1

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

0

Между частными и общедоступными переменными/методами нет разницы между временем выполнения. Это зависит только от ваших требований к программе. например, у вас есть метод, который требуется для всей программы, тогда вы должны использовать открытый метод. Он уменьшает дублирование кода. Но у вас есть метод, которому требуется только один класс, тогда вы должны использовать частный метод.

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