|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, выделять на стеке только object String, без буффера - те же яйца, но в профель. Все равно будет heap гадится. Нет, только буфер. TmpStringBuilder 2) непонятно, что делать с функциями возвращающими строки. Теоретически, побороться можно, практически - фиг знает как реализовать. Или будет копирование туда-сюда обратно между кадрами стека или нужно память под возвращаемое значение в кадре вызывающей процедуры выделять (и передавать не явным парметром), но опять таки, В верхней функции создаем TmpStringBuilder и передаем во все вызываемые процедуры как параметр. азмем буффера под строку заранее не известен (и даже, может меняться). Если его зафиксировать константой, то должно получится. Доступ к i-му элементу тоже возможен но это будет как-раз отступление от потоков и движение в сторону других строк. Уж лучше я на буфере фиксированного размера буду работать. Нужно как-то уметь понимать и обрабатывать объекты покидающие/могут покинуть (аналог escape-анализа) Thread. Этого мало. Нужно убивать TmpStringBuilder при завершении функции, в которой он объявлен, не потока, а функции. Если сделать выделение под TmpStringBuilder в куче, общей для всех потоков, но отдельной от обычной куче? В этой строковой куче не будет сборщика мусора, память будет освобождаться сразу по выходе из процедуры со всеми прелестями фрагментации и т. п. Не получится из за необходимости синхронизации потоков для выделения памяти? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:14 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton....survival областей....этих перебежчиков. Предположим, есть одна штука application сервера, где крутятся два разных процесса/сервлета 1. "быстрый" запрос-ответ (0.001 секунда), но к которому идет частое обращение, т.е. много мусора 2. "второй" медленный (10 секунд), выделяющий буффер большого объема. пусть обработка фотографий из-за процесса N 1, minor коллектор срабатывает раз в 0.2 секуды... все хорошо... но буффер от второго процесса, никогда в eden не задержится, т.к. за 10 / 0.2 = 50 циклов сборки мусора, он явно из servival в old gen переместится. В общем, современная JVM совершенно не многозадачная. Ее можно настроить только на выполнения одной задачи. А для разных thread/задач, нужны разные настройки памяти. Статистика по survival для настройки и так вполне достаточная. Но если на сервере есть разные классы задач (по времени жизни, по требованию eden vs old / temporary object vs cache/ ), то нормально работать они могут только после разнесения по разные JVM / application server'ам. Современные концепция application server'ов: кучу application задеплоим в одну JVM - для меня очень сомнительна IMHO p.s. Потребность использования non-heap меморя для кэшей - из-за этого же. Просто нельзя нормально JVM настроить, пока heap общий. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:16 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene New...В этой строковой куче не будет сборщика мусора, память будет освобождаться сразу по выходе из процедуры... Ну напишите свою реализацию String'а на non-heap memory + подсчет ссылок Только... практического смысла в этом нет... никакого. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:20 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonвадя, это камент к какому из моих сообщений?в среднем по всем, как я вижу разговор из практической фазы переходит в область околонаучных исследования,теоретически может быть и интересно , но практически - ..., как и исследования британских учёных. твои бы знания направить в изучение оптимизации стринбилдера - это было бы и более познавательнее и более практичнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:21 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадяmaytonТебе по идее вообще не нужна строка. У тебя сервлет. И у него где то есть OutputStream. Вот туда и надо нацелить html bulder.вот тут и проявляется. у меня ws. и тут только строка или бинари. и строка, как ни крути, останется строкой. Ты хочешь сказать что в этот ws ты вставляешь html? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:21 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Ну напишите свою реализацию String'а на non-heap memory + подсчет ссылок Ничего считать не надо, всегда удаляем по выходу из процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:23 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonТы хочешь сказать что в этот ws ты вставляешь html?с передаю сформированную строку (которая представляет из себя html код /в примере таблица/) по ws, на клиенте просто вставляю эту строку как элемент.innerHTML='полученная_по_ws_строка' и у меня отображается таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:26 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадяmaytonвадя, это камент к какому из моих сообщений?в среднем по всем, как я вижу разговор из практической фазы переходит в область околонаучных исследования,теоретически может быть и интересно , но практически - ..., как и исследования британских учёных. твои бы знания направить в изучение оптимизации стринбилдера - это было бы и более познавательнее и более практичнее. Стринг билдер - прекрасно работает. Нечего там оптимизировать. Топик вообще про компиллятор. Надо просто некоторым топик стартерам сначала почитать рекомендации по оптимизации. Самые базовые. Они есть в любом языке. В сях есть свои. В Паскале свои. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:27 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewУж лучше я на буфере фиксированного размера буду работать. А в твой буфер можно будет положить utf-8 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:30 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадяmaytonТы хочешь сказать что в этот ws ты вставляешь html?с передаю сформированную строку (которая представляет из себя html код /в примере таблица/) по ws, на клиенте просто вставляю эту строку как элемент.innerHTML='полученная_по_ws_строка' и у меня отображается таблица. Это треш. Ты согласен? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:31 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonЭто треш. Ты согласен?это серверный рендеринг. объясни в чем трэш? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:33 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадяmaytonЭто треш. Ты согласен?это серверный рендеринг. объясни в чем трэш? WS - это веб-сервис? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:36 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonWS - это веб-сервис?websocket ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:39 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonСтринг билдер - прекрасно работает. Нечего там оптимизировать. +100500 Если StringBuilder не нравится, то можно ByteArrayOutputStream взять. У него даже несколько реализаций есть (например от google - поблочне выделение, что бы копирования не было) maytonНечего там оптимизировать. Обычно "подводный" камень по перформанцу это отдача клиенту по сети. Там приходится и encode в кодовую таблицу клиента делать и gzip'овать Gzip в Java (да и вообще), крайне тормознутая вещь. У нас >50 % CPU на продуктиве уходило чисто на gzip перед отдачей клиенту. Всякие JSON / ProtoBuf / String / StringBuilder'ы на этом фоне были копейки ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:40 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevGzip в Java (да и вообще), крайне тормознутая вещь.вообще то зипует апач- нативным кодом. java тут не приделах ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:44 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадяmaytonWS - это веб-сервис?websocket А тьфу. Ну сорян. Извини я не UI-щик и этих ваших юайных штук не понял. Ладно беру слова взад. Не трешак. Нормик. Но насчет Html-builder ты все таки подумай. Код всегда удобнее рефакторить если это вызовы методов а не простыня конкатенаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:46 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, А в твой буфер можно будет положить utf-8 ? Суть предложения дать возможность выделять на входе процедуры буфер в стеке с его автоматическим освобождением при выходе из нее. Класть туда можно что угодно, для UTF-8 можно отдельный класс сделать. Хотя я бы этот utf-8 использовать бы не стал. Все равно на выходе из самой верхней функции вернет String tmpBuf.ToString (), выделяя под этот String место в обычной куче. По производительности - не хуже чем сейчас. Зато не будет на каждую операцию со строкой мусорить в куче умершими StringBuilder-ми. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:15 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Кстати, в UI приложениях этот ваш сборщик мусора бесит больше долгих операций по нажатию кнопки. Пользователь может понять, почему ему приходится ждать, когда он что-то приказал сделать, нажав на кнопку. Но когда он не делает ничего, а программа начинает вдруг шуршать диском и зависать - это реально бесит. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:18 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewХотя я бы этот utf-8 использовать бы не стал.. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:18 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Вот сижу я в Firefox, никого не трогаю, смотрю сайт, просто текст читаю. И вдруг эта сволочь начинает виснуть сама по себе и шуршать диском. Не знаю, что оно там вообще делает, мусор собирает или еще что, но раздражает изрядно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:20 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, мы же заботимся об упрощении работы программиста. С UTF-8 работать сложнее, потому что он не является массивом символов с произвольным доступом и дольше по той же причине. Раз уж буфер все равно уничтожится при выходе из функции, уж лучше я буду формировать строки без лишнего геморроя. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:22 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewВот сижу я в Firefox, никого не трогаю, смотрю сайт, просто текст читаю. И вдруг эта сволочь начинает виснуть сама по себе и шуршать диском. Не знаю, что оно там вообще делает, мусор собирает или еще что, но раздражает изрядно. Это просто прекрасно. Мне нравится как ты проводишь параллели между java и посторонними приложениями на сях. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:30 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадя, заведи свою ветку, или ничего не пиши, если, на голубом глазу, считаешь что с твоим кодом всё в порядке. Обсуждать "твою" тему в этом топике - за рамками добра и зла. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:34 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Обсуждать "твою" тему в этом топике - за рамками добра и зла. Как раз его тема здесь по смыслу подходит. Т. к. вопрос заключается и в возможных проблемах со String. В отличие от ваших сообщений, в которых один оффтоп и ноль полезной информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:44 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonEugene NewХотя я бы этот utf-8 использовать бы не стал.. Почему? потому что там на символ или один или два байта, а программу нужно писать на одном языке (не языке программирования а вобще) пишете для англичан то ansii Код: java 1. 2. 3. 4. 5.
клиент из россии то cp1251 Код: java 1. 2. 3. 4. 5.
все остальное от лукавого. Причем все строки на стеке и работает ну очень быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:46 |
|
|
start [/forum/topic.php?fid=59&msg=39707031&tid=2121729]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 173ms |
0 / 0 |