|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Рекомендации FindBug по поводу этого фрагмента кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:21 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, а на Integer.toString даже не ругается. Этот FindBug наверняка писали не какие-то сверхлюди, а такие же как мы с вами, возможно глупее нас. Не всегда же будет так очевидно. Скажем будет функция создающая String и ее вызов в цикле. Вряд ли этот FindBug поможет. Он и не помог с Integer.toString. Есть расхожая цитата: "преждевременная оптимизация корень всех зол". Только обычно не обращают внимания на слово преждевременная. Является ли преждевременной оптимизация использования строк сразу же? Ведь известно, что именно строки чаще всего вылезают в профайлере как проблемные места, потребляющие память. И как потом оптимизировать их использование в запутанной иерархии классов, если это не сделано изначально? Авторы Idea, например, если судить по их ролику об оптимизации даже и не пытаются оптимизировать свой код, хотя строки у них на первом месте по пожираемым ресурсам. Пусть они дилетанты, но все же.. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:29 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonпо поводу этого фрагмента кода ты мне другое скажи, у тебя чего шрифты такие в линухе страшные ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:37 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Беря во внимание внутреннее устройство StringBuilder я-бы сделал так. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Забавно но чисто случайно я переключил Jdk на десятку и заметил что StringBuilder уже не оперирует символами. Он может работать с байтовым представлением строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:41 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
chpashamaytonпо поводу этого фрагмента кода ты мне другое скажи, у тебя чего шрифты такие в линухе страшные ;) Ты тоже заметил? А я как раз недавно даже топик на эту тему поднимал. После перехода с Windows10 на Ubuntu-14 у меня долго была ломка в части работы с UI. Там по консоли да по серверной части - ОК. Привык ибо много лет работаю с серверными операционками. Ораклы там. Дж-Боссы и прочее. Но тут - десктоп. Я и выпал в осадок. Честно такого огромного количества визуальных косяков я давно не видел. Графический редактор Pinta крашится непрерывно уже пол-года. Никто не фиксит хотя я репорты слал уже 5 раз. Не могу вообще вспомнить чтобы MS-Paint подвисал или ронял систему в синий экран. Ну да бох с ним. Оффтоп ибо. Подниму отдельно "топик-ворчалку" в разделе Линуксов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:45 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
chpashamaytonпо поводу этого фрагмента кода ты мне другое скажи, у тебя чего шрифты такие в линухе страшные ;) Наверное, ему лень снять флажок с "Show only Monospaced Fonts". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:47 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
chpashamaytonпо поводу этого фрагмента кода ты мне другое скажи, у тебя чего шрифты такие в линухе страшные ;) Вот хорошая статья для настройки шрифтов, если убунта . ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:49 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Andy_OLAPchpashaпропущено... ты мне другое скажи, у тебя чего шрифты такие в линухе страшные ;) Вот хорошая статья для настройки шрифтов, если убунта . Thnx. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:52 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Andy_OLAPВот хорошая статья для настройки шрифтов мне не надо, у меня хорошие шрифты ;) Andy_OLAPНаверное, ему лень снять флажок с "Show only Monospaced Fonts" раз пошла такая пьянка с гаданиями, то вангую, что mayton идею не с той jdk запускает ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:52 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
StringBuilder уже не оперирует символами. Он может работать с байтовым представлением строк Подробнее, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:54 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene Newа на Integer.toString даже не ругается а что с ним не так? просто можно записать лаконичней. от того, что ты вызовешь stringBuilder.append(int) или просто string + int ничего не изменится, int все равно нужно в String конвертировать ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 21:57 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewStringBuilder уже не оперирует символами. Он может работать с байтовым представлением строк Подробнее, пожалуйста. Начало этой темы было тут Алексей Шипилев - Катахезис String. Там он прошелся по секретам имплементации строк в т.ч хардкодным оптимизациям. Рассказал о том что от двухбайтных char[] отказываются в пользу более экономного внутреннего представления. Далее... надо качать последние Jdk и смотреть сорцы. Там действительно мать его байтовый массив. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 22:01 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewИм бы еще самим научится эти IDE грамотно писать. Критикуя предлагай альтернативу Eugene Newlleming, А что там читать, код написан криво уже не раз сказали в ветке об этом. По жизни недогоняющему Siemargl читать надо, причем до полного просветления - он решил, что компилятор все исправил и так можно писать. Ну не совсем это он имел ввиду, а то что это известный плохой паттерн использование конкатенации строк в цикле. Который можно увидеть и на Хабре и stackoverflow и в статьях частенько. Eugene NewЧтобы говорить на любой пример плохого поведения программы, что код плохой и программист дурак, даже не нужно обладать разумом. Это может и попугай. Сформулировать критерии заранее, что можно и что нельзя, гораздо сложнее. Единого мнения по правилам применения String я тут не вижу. (недогоняющих просьба не беспокоится). Говорить попугай может, правда не всегда угадывает правильно, а если бы угадывал всегда то программистов давно заменили бы попугаями. Правило поведения очень простое каждый выбирает для себя сам, я когда столкнулся выбрал использовать явно всегда StringBuilder и пне полагаться на компилятор. Тут трейдофф если код простой со stringbuilder ухудшается читаемость. Поведение компилятора очень разумное. Integer.toString это явная просьба создать новый объект, соотвественно что просили то получили в чем проблема? Единые правила известны если вам нужны объекты делайте их если не нужны то избегайте. Возможно синтаксис Java иногда явно не указывает будет создан объект или компилятор сам поправит, но иногда даже явность не всегда поможет, так там еще много накручено прям в Jvm кэши на Integer, String. Если неизвестно создаются или нет объекты то откройте исходники благо они доступны в Java (тут кстати IDE и пригодится ctrl click и уже прям там где надо, и неплохо регулярно этим пользоваться) Общие претензии видимо к тому что компилятор не разворачивает самостоятельно цикл и не выносит stringbuilder наружу из цикла. И правильно делает ибо не знает точно что все внутри цикла без побочных эффектов и соотвественно делает то что его попросили. Конешно можно было впилить в компилятор сразу правильно разворачить цикл и выносить stringbuilder наружу и это красиво выглядет на этом тривиальном примере. Но тут ктото пишет метод который помимо основной логики, еще и делает ну например устанавливает соединение к БД. В результате получим здоровски быстро сделанную строку и непонятный NullPointerException и непонятном месте из за того что компилятор соптимизировал конкатенацию и вырезал важную часть кода по инициализации соединения с БД. Есть целые трактаты советы как делать и как не делать и почему с примерами. Целая куча статей на ibm developer network например от брайна гоетца с объяснениями как поведет себя кусок кода в конкретном случае, можно полистать oracle secure coding standards. Ссылок накидать легко, но есть сильное подозрение что не заинтересует. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 23:06 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
lleming, Ну не совсем это он имел ввиду Как раз это. уже работает автоматическая оптимизация такого говнокода -> стрингбилдер. Не впервые тут от этого гражданина вижу понимание строго наоборот. Критикуя предлагай альтернативу Это не обязательно. Но все же пусть посмотрят, как сделаны старые взрослые IDE. И знания основ и здравый смысл бы им не помешал. Например, не лепить 30 отдельных файлов настроек в формате XML в запутанное дерево каталогов. Т. к. XML сам по себе уже иерархическая БД и все можно писать в один файл. Это позорище видно каждому сразу после установки этой суперсреды. Поведение компилятора очень разумное Тут дело не в компиляторе, а в языке и его библиотеке. Гуано-код Integer.toString (и его аналоги) это часть стандартной библиотеки. И оператор + для строк часть языка. Можно насчет этого подискутировать. Что хорошего вы видите в этих двух вещах, что оправдывало бы их существование? Должна быть четкое и краткое описание того, что считается гуано кодом при работе со String. Без воды. mayton, Алексей Шипилев - Катахезис String. Я попробую это почитать. Хотя название уже доставляет. Катехизис! Секта свидетелей Java, блин! Может он и правда принимает вещества какие-нибудь? Не могли бы вы в двух словах рассказать тут, что имеется в виду, это ведь наверняка можно описать именно в двух словах, чтобы не продираться через сектантскую проповедь "Пастора", который наверняка будет тратить две страницы на то, что можно описать в двух предложениях. И вообще после сборщика мусора, который мусор не собирает вообще, а просто роняет программу в произвольный момент, я от него жду чего угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 23:48 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Блин, он РЕАЛЬНО под НАРКОТОЙ это писал. Или он шизофренией страдает. https://shipilev.net/talks/jpoint-April2015-string-catechism.pdf "Stay Awhile And Listen" "Кишочки" "Кишочки: Катехизис" "Почему всё это так больно?" "как облегчить мои страдания?" "В ответ была тишина, и Инженер ушёл просветлённым" "Тишина была ему ответом, и профессионал ушёл просветлённым" "Регулярки: разорвать на куски" "Гуляем" И выводы: "String хорошо оптимизирован" Самое обидное, что про 10-ю версию я ничего не нашел, а ведь шизоидно-амфетаминовый бред прочитал. Ну по внешнему виду автора видно, что с головой что то не так. https://i.ytimg.com/vi/8F7uTlv5Y9E/maxresdefault.jpg ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 00:02 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Рассказал о том что от двухбайтных char[] отказываются в пользу более экономного внутреннего представления. Что автоматически приведет к дикому замедлению обработки строк. Впрочем, разве это его волнует, когда колеса под рукой?) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 00:15 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewНе впервые тут от этого гражданина вижу понимание строго наоборот. ну для тех кто был этим вопросов озабочен ранее вполне очевидно что именно он имел ввиду. Eugene NewЭто не обязательно. Но все же пусть посмотрят, как сделаны старые взрослые IDE. И знания основ и здравый смысл бы им не помешал. Например, не лепить 30 отдельных файлов настроек в формате XML в запутанное дерево каталогов. Т. к. XML сам по себе уже иерархическая БД и все можно писать в один файл. Это позорище видно каждому сразу после установки этой суперсреды. какое отношение файлы настроек имеют к качеству и удобству IDE, да никакого. Файлы настроек для IDE и используются только IDE. Как и где желают хранить настройки ide пусть решают разработчики ide, мне без разницы. Не верится что разбиение на разные файл настроек случайное решение. Вполне разумным решением хранить разные части настроек в разных файлах ибо легче тестировать независимые части чем все в куче. К тому же в xml dom очень небыстро сериализовать а если настроек много то уже неприятные задержки будут. есть такая штука как мавен т.к. шта проект ездит без проблем из eclipse, в idea и Netbeans и никаких проблем хоть в Notepad работай только Maven directory layout запомни и все. Eugene NewТут дело не в компиляторе, а в языке и его библиотеке. Гуано-код Integer.toString (и его аналоги) это часть стандартной библиотеки. И оператор + для строк часть языка. Можно насчет этого подискутировать. Что хорошего вы видите в этих двух вещах, что оправдывало бы их существование? Integer.toString есть документация для чего это, int в строку преобразовывать. Что такое int и почему они в Java тоже можно нагуглить. Вот если у System.out не был бы перегружен метод println а был бы только println(String line) то что тогда остался бы только варинт везде писать System.out.println(""+number); Не все библиотеки продуманы для все вариантов. Есть подозрение что если бы забыли в станд. библиотеку добавить Integer.toString и оставили только println(String value) то Вопрос "Как вывести на консоль integer value" был бы вторым после "Как выйти из vim" Первый вариант симпатичнее явно говорит что произойдет. String number = Integer.toString(22); String number = "" + 22; 2+"2" что должно быть, а что будет ? Integer.toString(2) + "2" а здесь ? Eugene NewДолжна быть четкое и краткое описание того, что считается гуано кодом при работе со String. Без воды. Которое уже неоднократно указали без воды не используй строки как промежуточное хранилище, а используй stringbuilder. Eugene NewИ вообще после сборщика мусора, который мусор не собирает вообще, а просто роняет программу в произвольный момент, я от него жду чего угодно. Не в произвольный а когда заканчивается память, а она не заканчивается если не расходуется. А если расходуется и по определенному паттерну то отсекаем часть и проставляем памяти больше чем в точке отсечения это же не рокет саенс. Это не единственный и не основной gc, а как вариант предложение, ибо в java все неспешно. Можно попробовать оценить, не подходит не использовать. Где такой используется уже указали где нужен хороший отклик и можно сервер реастартовать регулярно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 00:39 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
lleming, какое отношение файлы настроек имеют к качеству и удобству IDE Прямое. И вообще это индикатор крайне низкого уровня. Как только я это увидел - понял, дилетанты. Все дальнейшее подтверждает мое первое впечатление. Если даже такую элементарную вещь сделали максимально через задницу, остальное тем более. Файлы настроек для IDE и используются только IDE. А замусорили ими все. Какого они вообще пишут в чужие каталоги какие то файлы, даже не заботясь, что могут ими что то затереть? Не верится что разбиение на разные файл настроек случайное решение. Да уж, я тоже в случайность не верю. . К тому же в xml dom очень небыстро сериализовать Это следующий пункт - использование xml само по себе. То, что они делают xml а используют их как набор плоских файлов, показывает, что они вообще не понимают что делают и зачем. Хотели бы использовать xml-как единую иерархическую базу для того, чтобы хранить все в одном месте - это еще можно было бы понять. Создали бы кучу плоских файлов, которые легко читать поодиночке - ну хреново, но хотя бы понятно. А брать xml и делать кучу файлов, которыми замусоривать все - это максимально через задницу. И ведь речь то идет о ПРОСТЫХ вещах, но нет, из них сделали сами искусственно целую ПРОБЛЕМУ. Одно это уже говорит о том, какой у них ужасный бардак во внутренней архитектуре программы. Ну не понимают люди, что они вообще делают и зачем. Что только подтверждается дикими системными ресурсами, которые она жрет и ее низким быстродействием. Тут давали ролик на рассказ одного из авторов Идеи о попытках оптимизации. 2017 год. Сразу обращает внимание, что автор, хотя 10 лет работает над этим проектом, "открытия" начал совершать в 2017 году. Обнаружив, что главная проблема в строках, он даже не сделал никакой попытки оптимизировать архитектуру проекта с точки зрения использования строк. Только пытался тип строк подменить - что ему сделать так и не удалось. есть такая штука как мавен Не буду про мавен, я его не пробовал. Он хотя бы скачанные файлы сохраняет в нормальном виде, в котором их можно использовать. Что гораздо лучше мерзейшего gradle. Netbeans Из всех трех это мне понравилось больше других. Integer.toString есть документация для чего это, int в строку преобразовывать Есть StringBuilder.append (int) . Заметьте, сишная itoa не создает строку, а пишет в готовый буфер. 2+"2" что должно быть, а что будет ? Должна быть ошибка компиляции. Это если по уму. Не в произвольный а когда заканчивается память, а она не заканчивается если не расходуется Уже обсуждалось же. Нельзя предсказать момент окончания памяти, нельзя его обработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 01:21 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
lleming, Которое уже неоднократно указали без воды не используй строки как промежуточное хранилище, а используй stringbuilder. Это не решает всех проблем, т. к. даже в лучшем случае модификация строки ведет к созданию как минимум одной мусорной копии. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 01:24 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewРассказал о том что от двухбайтных char[] отказываются в пользу более экономного внутреннего представления. Что автоматически приведет к дикому замедлению обработки строк. Впрочем, разве это его волнует, когда колеса под рукой?) Давайте порассуждаем. Основной поинт который ставился во главу угла - это чрезмерное использование интернированных строк. Констант. Имен классов и пакетов. В кодировке UTF-16 они занимают много места хотя содержат в основном латиницу. При работе с конвертерами с UTF-8/Latin в UTF-16 мы понесем какие-то накладны расходы. Но вспомним что все это написано на intrinsic и перформанс будет примерно такой же как в С++. Кстати предлагаю обсудить положение с кодировками в С++. Вообще при оптимизации я-бы обсудил два вектора. 1) Собственно уменьшение памяти которую занимают структуры данных. Если уменьшим - значит освободим место под другие структуры, кеши, пулы объектов 2) Собственно оптимизация кода (мегафлопы процессора). В данном вопросе я считаю что оптимизация размера строк это скорее благо чем зло. Все кто делали memory dump обращали внимание что top memory consumers : это в первую очередь char[] - тоесть собственно внутренние структуры строк. Поэтому по поводу "дикого" замедления строк я-бы на вашем месте не спешил. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 08:31 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewБлин, он РЕАЛЬНО под НАРКОТОЙ это писал. Или он шизофренией страдает. По поводу персоны Шипилева. На самом деле он - человек от "системы". Кодил OpenJDK стало-быть что-то знает. И вообще если пройтись по всяким Jug/JPoint/Joker конференциям то подобных ему "рупоров" перформанса почти нет никого. Ну есть еще Роман Елизаров который тоже по части перформанса любит порассуждать. На безрыбье и такой Шипилев вполне себе рыба. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 08:35 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewЭто следующий пункт - использование xml само по себе. То, что они делают xml а используют их как набор плоских файлов, показывает, что они вообще не понимают что делают и зачем. Хотели бы использовать xml-как единую иерархическую базу для того, чтобы хранить все в одном месте - это еще можно было бы понять. Создали бы кучу плоских файлов, которые легко читать поодиночке - ну хреново, но хотя бы понятно. А брать xml и делать кучу файлов, которыми замусоривать все - это максимально через задницу. И ведь речь то идет о ПРОСТЫХ вещах, но нет, из них сделали сами искусственно целую ПРОБЛЕМУ. Мне вобщем тоже не нравится сам xml как основа для конфигураций. Я считаю его соврешенно избыточным и не-human readable. По сабжу. Два пункта. Вы скорее всего не работали с maven. Maven предполагает много-модульный проект каждая часть которого имеет dependencies от других модулей. Это дает возможность в разработке нам не собирать крупный проект (сборка которого может длится много минут) а задать сборку одного модуля. Беря во внимание практики использования файловой системы последних лет мы делаем раздельные конфигуарции для каждого модуля. Связи - семантические. Тоесть связь - подразумевается. Это даёт определенную гибкость о управлении модулем. По поводу - "почему" и прочее. Maven как и многие open-source проекты создавался спонтанно группой энтузиастов. И они не запилили каких-то фич просто потому что не было рядом с ними такого инициативного как вы. Поэтому цена вашего рац-предложения - это войти самому в группу разработки. Предложить идею или улучшение. И своими силами, своим умением и уберждениями "продавить" эту идею и запилить ее в мастер репозитарий. Что вы все еще сидите? Почему я не вижу ваш пул-реквест? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 08:50 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewПрямое. И вообще это индикатор крайне низкого уровня. Как только я это увидел - понял, дилетанты. Все дальнейшее подтверждает мое первое впечатление. Если даже такую элементарную вещь сделали максимально через задницу, остальное тем более. скажет так пишут они в "невидимые" под линукс .idea, .settings, .classpath и соотсвественно обычно их тут же добавляют в gitignore, и проект отстается чистым мавеном. А про мавен mayton уже написал подробнее. А замусорили ими все. Какого они вообще пишут в чужие каталоги какие то файлы, даже не заботясь, что могут ими что то затереть? не в чужие в свои конкретные Eugene New Не верится что разбиение на разные файл настроек случайное решение. Да уж, я тоже в случайность не верю. Вряд ли чтобы испортить Вам настроение, а больше с точки зрения надержности, скорости, легкости расширения. Многие сразу в проект mvnw аля gradle добавляеют и он тоже папочку создает и ничего. Eugene New. llemingК тому же в xml dom очень небыстро сериализовать Это следующий пункт - использование xml само по себе. То, что они делают xml а используют их как набор плоских файлов, показывает, что они вообще не понимают что делают и зачем. Хотели бы использовать xml-как единую иерархическую базу для того, чтобы хранить все в одном месте - это еще можно было бы понять. Создали бы кучу плоских файлов, которые легко читать поодиночке - ну хреново, но хотя бы понятно. А брать xml и делать кучу файлов, которыми замусоривать все - это максимально через задницу. И ведь речь то идет о ПРОСТЫХ вещах, но нет, из них сделали сами искусственно целую ПРОБЛЕМУ. Одно это уже говорит о том, какой у них ужасный бардак во внутренней архитектуре программы. Ну не понимают люди, что они вообще делают и зачем. Что только подтверждается дикими системными ресурсами, которые она жрет и ее низким быстродействием. Тут давали ролик на рассказ одного из авторов Идеи о попытках оптимизации. 2017 год. Сразу обращает внимание, что автор, хотя 10 лет работает над этим проектом, "открытия" начал совершать в 2017 году. Обнаружив, что главная проблема в строках, он даже не сделал никакой попытки оптимизировать архитектуру проекта с точки зрения использования строк. Только пытался тип строк подменить - что ему сделать так и не удалось. Видимо там нечего оптимизировать поэтому и не делал попыток. Integer.toString есть документация для чего это, int в строку преобразовывать Eugene newЕсть StringBuilder.append (int) . Заметьте, сишная itoa не создает строку, а пишет в готовый буфер. Готовый буфер откуда появляется? Если в цикле создавать новый буфер и загонять туда число чем от приведенного примера отличается ? А в java сделайте stringbuilder, у него все равно буффер внутри и заметьте он не создает строку а пишет в буффер builder.append(34) Уже обсуждалось же. Нельзя предсказать момент окончания памяти, нельзя его обработать. Да обсуждалось, можно предсказать это простая логика, если чтото не тратить то это не закончится. Как вариант для особо типа приложений jvm рестартовать до того как закончится память. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 10:12 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewРассказал о том что от двухбайтных char[] отказываются в пользу более экономного внутреннего представления. Что автоматически приведет к дикому замедлению обработки строк. Впрочем, разве это его волнует, когда колеса под рукой?) Firefox такое провернули несколько релизов назад. Огласили результат что наоборот стало сильно быстрее и меньше тратить памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 10:14 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Раз идентификаторы содержат только латинские буквы и цифры с подчеркиванием (это ведь так для Java?), напрашивается их хранить в однобайтовых строках. Т. к. это стандарт языка, вряд ли потребуется это менять. Многобайтовые строки считаю злом - либо увеличение размера в два раза, либо невозможность простого доступа к символу в строке, что усложняет все алгоритмы обработки строк. Фактически, чтобы использовать любой старый наработанный алгоритм обработки строки, надо сначала преобразовать ее в многобайтовую кодировку с фиксированной длиной символа. А потом преобразовывать ее обратно, если мы хотим уменьшить занимаемое место. Но для русских букв оно все равно не уменьшится. Тогда как русские буквы прекрасно хранятся в одном байте. Нас заставляют платить за ущербность китайской системы письма, хотя мы ее вообще не используем. Долго и упорно всем навязывали эти многобайтовые кодировки. Тех, кто латиницу использует, возможно это мало затрагивает, может даже многие из них и не делают расчет на многобайтовость UTF8. Англосаксонские шовинисты. Насчет скорости встроенных конвертеров строк - все равно же если мы будем обрабатывать каждую строку перед использованием ее в Java, это займет заметное время, т. к. обрабатывается она полностью и два раза - туда-обратно. А строки длинные бывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 10:37 |
|
|
start [/forum/topic.php?fid=59&msg=39705872&tid=2121729]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 176ms |
0 / 0 |