|
|
|
Снова про String.intern()
|
|||
|---|---|---|---|
|
#18+
Вот тут http://habrahabr.ru/post/79913/ автор пишет (1) авторДругими словами "version" == "version".intern() всегда истинно. Это намекает нам о то том, что компилятор _обязательно_, встретиив левую "version" засунет ее в пул строк и даст ссылку на нее. Там же автор пишет: авторТак почему же я так удивился, увидев protected final static String fVersionSymbol = "version".intern(); Мне кажется, автор удивился неспроста. Что мы тут видим? Строку, которую как мы выснили в (1) jvm и так сунет в пул, зачем-то все же интернируют. Чтобы наверняка! Наверное, все же, jvm не обазана совать строки в пул по умолачнию, другое дело что хотспот это делает. А раз так, "version" == "version".intern() все же не всегда будет истинно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 17:14:20 |
|
||
|
Снова про String.intern()
|
|||
|---|---|---|---|
|
#18+
вот любители заглянуть в анальную трещину. Ну какую практическую пользу принесут эти знания? Строка - это объект, объекты сравниваются по икуалс тчк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 17:32:12 |
|
||
|
Снова про String.intern()
|
|||
|---|---|---|---|
|
#18+
нет, никакой точки нету. Если много операций сравнения, то использовать эквалс - это говнокод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 17:47:02 |
|
||
|
Снова про String.intern()
|
|||
|---|---|---|---|
|
#18+
chabapokВот тут http://habrahabr.ru/post/79913/ автор пишет Сколько уже можно говорить, не читайте на хабре про программирование, если это не переводы. chabapokавторДругими словами "version" == "version".intern() всегда истинно. Это намекает нам о то том, что компилятор _обязательно_, встретиив левую "version" засунет ее в пул строк и даст ссылку на нее. Левые и правые не при чем. Компилятор помещает в пул все строковые константы, которые находит в коде. chabapokТам же автор пишет: авторТак почему же я так удивился, увидев protected final static String fVersionSymbol = "version".intern(); Мне кажется, автор удивился неспроста. Что мы тут видим? Строку, которую как мы выснили в (1) jvm и так сунет в пул, зачем-то все же интернируют. Чтобы наверняка! Наверное, все же, jvm не обазана совать строки в пул по умолачнию, другое дело что хотспот это делает. А раз так, "version" == "version".intern() все же не всегда будет истинно? Facepalm. Это приём борьбы с инлайном констант. К интернированию строк особого отношения не имеет. Если убрать intern(), то компилятор в других классах вместо ссылки на поле будет использовать ссылку на константу в пуле. А когда значение поля поменяется в процессе разработки, нужно будет перекомпилировать все остальные классы. С помощью intern() инлайн предотвращаются и все классы ссылаются на поле, а не на константу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 17:51:52 |
|
||
|
Снова про String.intern()
|
|||
|---|---|---|---|
|
#18+
chabapokнет, никакой точки нету. Если много операций сравнения, то использовать эквалс - это говнокод. Чей-та? А всё подряд говно тащить в пул строк это не говнокод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 17:52:35 |
|
||
|
Снова про String.intern()
|
|||
|---|---|---|---|
|
#18+
не, ну это уже надо смотреть по обстоятельствам :) если с каждой строкой сравнивается десяток - можно и потащить, как мне видится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 18:18:43 |
|
||
|
Снова про String.intern()
|
|||
|---|---|---|---|
|
#18+
chabapokне, ну это уже надо смотреть по обстоятельствам :) если с каждой строкой сравнивается десяток - можно и потащить, как мне видится... Ещё раз хорошо подумай. Что именно надо сравнивать? Если это одни и те же строки? То возникает резонный вопрос, почему это строки, а не enum? А если это каждый раз разные строки, то возникает другой вопрос. А зачем мы все эти каждый раз разные строки помещаем в пул? Оно нам для чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 18:26:47 |
|
||
|
Снова про String.intern()
|
|||
|---|---|---|---|
|
#18+
Ясно. На самом деле я именно что любитель заглянуть в анальную трещину. Мне нужно было с этим разобраться, т.к. статью я прочитал, развидеть ее не получалось, а спать спокойно я уже не мог. Не будет никто юзать intern(), не волнуйтесь. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 20:01:50 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38154718&tid=2129958]: |
0ms |
get settings: |
17ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 317ms |
| total: | 485ms |

| 0 / 0 |
