|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewПредлагаю вернутся к теме обсуждения - String в Java. Давайте вернемся. В начале топика от вас прозвучала фраза. Что не так с Java String и как вы с этим боретесь? Да никак не боремся. С ним все в порядке. Это я тебе говорю после опыта разработки на C++ с разными типами CSTring, TString, std::string, после плавающей кодировки, когда есть микс разных API которые принимают где ASCII, где Unicode-16, e.t.c. После PL/SQL где отчоты формируются конкатенацией строк VARCHAR как раз в самом неприглядном варианте. После всего этого тип java.lang.String - не создает проблем. Разработчики-свитчеры (которые переключились с С/C++ на Java - обычно солидарны с этим). Надо просто помнить об иммутабельности. Это кстати серъезный задел на будущее в части мультипоточки и ФП. Если ты конечно слышал о важности иммутабельных типов. Тот пример что ты привел... Я гарантирую что он не пройдет code-review на enterprise-проектах. Поверь я был там. Я знаю. В некоторых случаях например в реализации ::toString() допускается такой вариант. Здесь нет пере-присвоения строки. Здесь компиллятор (восьмерка точно) просекает что можно сделать финт ушами и активирует билдер. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 18:46 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton... Давайте вернемся. В начале топика от вас прозвучала фраза. ... Не кажется странным мусолить на 8 страницах "тему". У неё на текущий момент отсутствует содержание. А с самого оно было ли, и стоило ли 8 страниц? Как думаешь, что лично тебя заставляет её "возвращать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 19:23 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, Нет смысла объяснять что то человеку, не понимающему, что оптимизаторы уже лет 10 выносят инвариант из цикла. Ну и до кучи, не знающего разницы между иммутабельными и COW строками ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 19:41 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
java 10 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 19:42 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
booby, содержание отсутствует у ТВОЕГО сообщения, так что перестань замусоривать тему. В других сообщениях оно есть и я получил из обсуждения полезную информацию, хотя не полный ответ на свой вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 19:42 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
boobyКак думаешь, что лично тебя заставляет её "возвращать"? Что меня заставляет модерировать два подфорума? Что меня заставляет подсказывать одному математику на пенсии как вообще пишут алгоритмы? Я не знаю. Это - загадочный вопрос и корни его лежат далеко не в It. Вобщем оффтоп это. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 19:48 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Siemargl, что оптимизаторы уже лет 10 выносят инвариант из цикла. Не надо гадать, что делают компиляторы вообще, когда мы видим сгенерированный байт-код, в котором это не сделано. Но Siemargl - уникум, всегда умудряется написать максимально наоборот тому, что есть. Вадя, java 10 Осталось узнать, что делает функция makeConcatWithConstants. Вдруг она внутри тот же самый StringBuilder создает? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 20:20 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewОсталось узнать, что делает функция makeConcatWithConstants. Вдруг она внутри тот же самый StringBuilder создает? http://qaru.site/questions/61777/how-is-string-concatenation-implemented-in-java-9 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 20:41 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene Newbooby, содержание отсутствует у ТВОЕГО сообщения, так что перестань замусоривать тему. В других сообщениях оно есть и я получил из обсуждения полезную информацию, хотя не полный ответ на свой вопрос. Милай, то сообщение не табе писалось. Там для табе содержания и не планировалось, не табе и письма писать. Между прочим, открой же тайну, вопрос-то у тебя какой , по состоянию на текущий момент? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 22:34 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадя, http://qaru.site/questions/61777/how-is-string-concatenation-implemented-in-java-9 Спасибо. Это интересно. Я понял, что можно каким то образом выбирать реализацию конкатенации во время выполнения. Не понятно только одно - каким образом работают предоставляемые варианты, что у них внутри. "Вызывает что то, помещенное внутри java.lang.StringBuilder", что именно это что то делает - не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2018, 22:53 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewНе понятно только одно - каким образом работают предоставляемые варианты, что у них внутри. "Вызывает что то, помещенное внутри java.lang.StringBuilder", что именно это что то делает - не видно.тут есть не только это... надо учесть еще что jvm производит оптимизацию во время выполнения , и что там делается одним разработчикам известно. и ещё много что зависит от количества раз использования данного фрагмента кода. поэтому если есть "проблемный" кусок кода - надо ставить "измеритель " времени выполнения и выбирать оптимальный вариант кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 10:13 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene Newвадя, http://qaru.site/questions/61777/how-is-string-concatenation-implemented-in-java-9 Спасибо. Это интересно. Я понял, что можно каким то образом выбирать реализацию конкатенации во время выполнения. Не понятно только одно - каким образом работают предоставляемые варианты, что у них внутри. "Вызывает что то, помещенное внутри java.lang.StringBuilder", что именно это что то делает - не видно. Вадя спасибо, очень интересно. Ну так там вполне очевидно. Вместо жесткой компиляции конкатенации через stringbuilder теперь компилятор генерит код вызова специального метода и его (метод) можно улучшать до бесконечности не затрагивая сам компилятор и не ломая предыдущую реализацию. Заранее зная распределение данных можно повысить эффективность реализации. Ну например если заранее известен необходимый размер буфера чтобы избежать расширения и копирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 11:57 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewАлексей Шипилев - Катахезис String. Блин, он РЕАЛЬНО под НАРКОТОЙ это писал. Или он шизофренией страдает. ... Самое обидное, что про 10-ю версию я ничего не нашел, а ведь шизоидно-амфетаминовый бред прочитал. ... Ну по внешнему виду автора видно, что с головой что то не так. ВОТ ЭТО ПОВОРОТ JEP 280: Indify String Concatenation Owner Aleksey Shipilev ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 12:01 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
llemingEugene NewАлексей Шипилев - Катахезис String. Блин, он РЕАЛЬНО под НАРКОТОЙ это писал. Или он шизофренией страдает. ... Самое обидное, что про 10-ю версию я ничего не нашел, а ведь шизоидно-амфетаминовый бред прочитал. ... Ну по внешнему виду автора видно, что с головой что то не так. ВОТ ЭТО ПОВОРОТ JEP 280: Indify String Concatenation Owner Aleksey Shipilev Да. Стиль подачи материала у Шипилева весьма эпотажный. Но я-же говорю. Это человек "от системы". Собсно если гуглить русскоязычные материалы по перформансу то основные двигатели этой активности это и есть Шипилев и Елизаров. За англоязычных - не скажу. Я их мало слушал. Так в основном по ссылкам JBreak, JPoint, Jug. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 12:23 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Я грепнул транковую ветку OpenJDK по его фамилии. Сейчас (по состоянию на 23-Sep 2018 она соответствует Java-11) Код: java 1. 2.
Там еще есть 2 со-автора этой библиотечки. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 12:33 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, Ну, в некотором смысле, это мелочёвка. Сжатые строки - вроде бы последнее, что он делал в Oracle. Думаю, что ConcatFactory - это что-то вроде работы в рамках сопровождения... он вроде бы в Red Hat c 16го года и, главным образом, пилит Shenandoah GC. На своем сайте он в красной шляпе теперь, и со ссылками на исходный код. А стиль да - молодёжный. Ребяты, это не для вас, но я вам расскажу.... Это не просто, а очень просто. Впрочем, о чем я говорю - вряд ли вам это вообще понять... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 14:56 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
boobyА стиль да - молодёжный. Ребяты, это не для вас, но я вам расскажу.... Это не просто, а очень просто. Впрочем, о чем я говорю - вряд ли вам это вообще понять... Меня самого раздражают "смищные щютки" и демотиваторы в докладах. Ума не приложу зачем они. Но в принципе способность рассказать сложные вещи очень простым языком - это очень хороший навык. Что-то там было в лидерских тренингах про "умение рассказать ребенку постулаты Эйнштейна"... Поэтому Шипилёву - плюс за доходчивость. Кстати в последнее время общаюсь с одним очень нудным математиком. Этот господин совершенно не может кратко и однозначно ответить на вопрос. Кажется что его в принципе не научили формулировать мысли кратко. А это - минус. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 17:15 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадяEugene NewНе понятно только одно - каким образом работают предоставляемые варианты, что у них внутри. "Вызывает что то, помещенное внутри java.lang.StringBuilder", что именно это что то делает - не видно.тут есть не только это... надо учесть еще что jvm производит оптимизацию во время выполнения , и что там делается одним разработчикам известно. и ещё много что зависит от количества раз использования данного фрагмента кода. поэтому если есть "проблемный" кусок кода - надо ставить "измеритель " времени выполнения и выбирать оптимальный вариант кода. В идеале даже после StringBuilder-овской оптимизации мы должны стартовать JMH-тесты и мерять что получилось. Готов спорить на бутылку виски что в обычном ентерпрайзе данная операция не будет узким местом. Там обычно ожидания стоят на работе с БД и Networking. Данный синтетический фрагмент кода который мы обсуждаем выдает нам константу которую можно даже кешировать поэтому пути для достижения перформанса идут гораздо дальше стринг-билдера. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 18:08 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, да, я понял что он не с улицы. Но в принципе способность рассказать сложные вещи очень простым языком Увы, у Шипилова нет этой способности. Скорее наоборот - запутывание. Судя по всему нет и полного понимания вещей о которых он говорит. При этом держит свою аудиторию за толпу имбецилов. общаюсь с одним очень нудным математиком. Возможно, он стремится быть как можно более точным. лидерских тренингах про "умение рассказать ребенку постулаты Эйнштейна" Они как обычно все перепутали и сделали это намеренно. "Если учёный не может объяснить уборщице, которая убирается у него в лаборатории, смысл своей работы, то он сам не понимает, что он делает." (c) Резерфорд. Это совсем не одно и то же. Судя по статье Дейкстры у США давно проблемы https://www.beroal.in.ua/article/dijkstra/ewd1165.html : "Посредственность не доверяет выдающемуся человеку, потому что не понимает его, и боится его, потому что он способен делать вещи за гранью понимания." "Менеджеры имеют совершенно стандартные боевые кличи, которые не изменились со времён Второй мировой войны. На учёных нападают как на личностей — на непокорных, неприкрытых индивидуалистов, управлять которыми намного сложнее, чем комитетами — приказывая работать в команде." "даже высокотехнологичные компании стремительно теряют учёных и инженеров" -- Возвращаясь к нашему любимому String, замечу еще раз, что пока не увидим деталей реализации этой новой функции, мы вряд ли точно узнаем, что изменится и изменится ли что то вообще и чем отличаются разные предлагаемые варианты между собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 18:18 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewУвы, у Шипилова нет этой способности. Скорее наоборот - запутывание. Судя по всему нет и полного понимания вещей о которых он говорит. При этом держит свою аудиторию за толпу имбецилов. Ну про ваш критицизм мы все уже поняли. Но где-же последующее предложение? Очевидно вы знаете языки и технологии где этот кейс реализован лучше? Прошу вас! Не стесняйтесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 18:22 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, Очевидно вы знаете языки и технологии где этот кейс реализован лучше? Я не совсем понял вопрос. Нужны примеры лучшего изложения тонкостей языка внутренних механизмов его реализации или лучшей реализации String? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 18:27 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene Newобщаюсь с одним очень нудным математиком. Возможно, он стремится быть как можно более точным. Когда говоришь - ВОТ ЭТИ ПРЯМЫЕ ПАРАЛЛЕЛЬНЫ! Тут-же набегают Лобачевский с Риманом и говорят - это смотря как посмотреть... Может и параллельны а может и нет.... Вобщем топик сходит из обсуждения конкретной задачи входит в сложную философскую линию допущений где и сама задача замыливается а тезисы ораторов сводятся к тому чтобы напустить побольше туману и не дать конкретного ответа никогда. Есть математика где можно договориться об условиях. И есть - философия где "петух - суть человек по определению Платона....". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 18:28 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene Newmayton, Очевидно вы знаете языки и технологии где этот кейс реализован лучше? Я не совсем понял вопрос. Нужны примеры лучшего изложения тонкостей языка внутренних механизмов его реализации или лучшей реализации String? Нет. Вы покритиковали работу со строками в java. Очевидно у вас был опыт либо работы с другими ЯП где эта работа реализована лучше. Либо вы знаете как разработать другой ЯП (компиллятор или рантайм) где это лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 18:29 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewСудя по статье Дейкстры у США давно проблемы https://www.beroal.in.ua/article/dijkstra/ewd1165.html : "Посредственность не доверяет выдающемуся человеку, потому что не понимает его, и боится его, потому что он способен делать вещи за гранью понимания." "Менеджеры имеют совершенно стандартные боевые кличи, которые не изменились со времён Второй мировой войны. На учёных нападают как на личностей — на непокорных, неприкрытых индивидуалистов, управлять которыми намного сложнее, чем комитетами — приказывая работать в команде." "даже высокотехнологичные компании стремительно теряют учёных и инженеров" Я удивляюсь как вы втащили в эту дему Дейкстру. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 18:32 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonГотов спорить на бутылку виски что в обычном ентерпрайзе данная операция не будет узким местом. Там обычно ожидания стоят на работе с БД и Networking.тут и спорит нечего, в одном из проектов для реализации "серверного рендеринга" строил строку html таблицы для порядка 2-3 тысяч записей со сложным строением ячейки таблицы - само построение стрингблдером было приемлемым для такого объёма. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2018, 18:36 |
|
|
start [/forum/topic.php?fid=59&msg=39706524&tid=2121729]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 468ms |
0 / 0 |