Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / static final String vs String performance / 7 сообщений из 7, страница 1 из 1
15.01.2018, 23:27
    #39584737
AK1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static final String vs String performance
static final String имеет преимущество в производительности перед обычным String? Считал что static final String объявляется и инициализируется раз и остается в памяти JVM всегда единым экземпляром, потому приложению нет необходимости каждый раз инициализировать переменную при обращении к ней, что еще больше должно проявляться в многопоточном программировании (том же веб контейнере).
...
Рейтинг: 0 / 0
15.01.2018, 23:41
    #39584739
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static final String vs String performance
AK1988...каждый раз инициализировать переменную при обращении к ней...Это что же за переменные такие, которые при каждом обращении инициализируются?

static final String имеет преимущество в производительности перед обычным String?
IMHO на уровне погрешности измерения.

Возможно преимущество в каких-то отдельных случаях, т.к. у JIT компилятора может быть больше свободы по оптимизации кода использующих фактически константы (static final)

IMHO & AFAIK
...
Рейтинг: 0 / 0
16.01.2018, 08:35
    #39584790
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static final String vs String performance
AK1988и остается в памяти JVM всегда единым экземпляром
Очень много заблуждений. Во-первых не всегда единым. Никто не мешает ту же строку собрать из внешних данных и получить другой экземпляр.
Во-вторых наличие лишних перманентных объектов в куче, например, негативно сказывается на производительность некоторых типов GC.

Если интересно разобраться - гуглите статьи про JVM string intern
https://shipilev.net/jvm-anatomy-park/10-string-intern/
...
Рейтинг: 0 / 0
16.01.2018, 10:36
    #39584886
AK1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static final String vs String performance
В ADF конструкция static final применяется повсеместно при создании Entity, потому даже не не сомневался в правильности подобной рациональности, про единость екземпляра имел ввиду одно приложение на одну jvm.
...
Рейтинг: 0 / 0
16.01.2018, 10:39
    #39584889
AK1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static final String vs String performance
...
Рейтинг: 0 / 0
16.01.2018, 17:11
    #39585308
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static final String vs String performance
AK1988,
Код: java
1.
2.
3.
4.
public static final String s = "xxx";
puclic void xxx(){ //lotta calling
    String s = "xxx";
}


В теории переменная внутри метода создастся много раз, на практике оптимизатор вынесет ее из метода.

В любом случае если значение является константой то самое место ему в константах
...
Рейтинг: 0 / 0
16.01.2018, 17:56
    #39585345
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static final String vs String performance
artasВ теории переменная внутри метода создастся много раз

Мы же с объектом не путаем? Переменной называем адрес объекта на стэке. Так?
artas, на практике оптимизатор вынесет ее из метода.

Переменную s? Вынесет куда?
artasВ любом случае если значение является константой то самое место ему в константах
А что же говорит документация по этому поводу?
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#intern() All literal strings and string-valued constant expressions are interned. String literals are defined in section 3.10.5 of the The Java™ Language Specification.
Нет выходит никаких "оптимизаций на практике"?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / static final String vs String performance / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]