Нефинальные статические строки более эффективны, чем статические финальные строки? - PullRequest
1 голос
/ 24 ноября 2010

Я только что прочитал статью в документах BlackBerry о написании эффективного кода на J2ME .

В этой статье есть раздел, который советует вам «использовать статические переменные для строк».Причина в том, что, поскольку компилятор указывает static final ссылки как строковые литералы, лучше оставить его не окончательным (я предполагаю, что получение статической ссылки дешевле, чем получение из пула строк?).

Это правда для всех JVM ??Мой начальник на моей последней работе вбил нам в голову, что мы должны всегда, всегда использовать static final для наших констант.Мы занимались встраиваемым программированием на Java, поэтому он был реальным сторонником производительности (хотя в этом случае я не уверен, был ли он больше озабочен памятью или скоростью).Мой босс занимается Java много лет и действительно знает свое дело, поэтому я воспользовался его советом;теперь я получаю противоречивые советы!

Так какой из них действительно лучше?Вы можете ответить либо с точки зрения сохранения памяти, либо с точки зрения скорости, либо для J2ME или J2SE.

1 Ответ

3 голосов
/ 24 ноября 2010

В общем, они должны быть одинаковыми.(С тем же , определенным как достаточно близкое, чтобы оно никогда не будет иметь значения)

Я бы очень настойчиво утверждал, что вы должны закодировать свое намерение (т. Е. С определением static vs non-static-ness)тем, является ли это класс константой по сравнению с экземпляр константой), а не каким-либо произвольным «повышением производительности»

Если вы обнаружите, что это существенная проблема производительности (итолько ПОСЛЕ того, как вы его измерили!), я бы классифицировал его как дефект компилятора / JVM и поставил бы обходной путь (поменяв его статичность) с комментарием, указывающим, почему.

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