powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Что не так с Java String и как вы с этим боретесь?
25 сообщений из 293, страница 8 из 12
Что не так с Java String и как вы с этим боретесь?
    #39706441
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
@Override
    public String toString() {
        return "GeoEntityCsv{" +
                "startIpNum='" + startIpNum + '\'' +
                ", endIpNum='" + endIpNum + '\'' +
                ", country='" + country + '\'' +
                ", region='" + region + '\'' +
                ", city='" + city + '\'' +
                ", postalCode='" + postalCode + '\'' +
                ", dmaCode='" + dmaCode + '\'' +
                ", areaCode='" + areaCode + '\'' +
                ", geoPoint=" + geoPoint +
                '}';
    }



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    Code:
       0: new           #12                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #13                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #14                 // String GeoEntityCsv{startIpNum='
       9: invokevirtual #15                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
........................
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706443
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton...
Давайте вернемся. В начале топика от вас прозвучала фраза.
...

Не кажется странным мусолить на 8 страницах "тему".
У неё на текущий момент отсутствует содержание.
А с самого оно было ли, и стоило ли 8 страниц?

Как думаешь, что лично тебя заставляет её "возвращать"?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706445
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Нет смысла объяснять что то человеку, не понимающему, что оптимизаторы уже лет 10 выносят инвариант из цикла.

Ну и до кучи, не знающего разницы между иммутабельными и COW строками
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706447
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
public class tmp {

    public static void xxx() {
        String s = "";
        for (int i = 0; i < 100; i++) {
            s = s + Integer.toString(i);
        }
    }

    public static void xxx1() {
        String s = "";
        for (int i = 0; i < 100; i++) {
            s = s + i;
        }
    }

    public static void xxx2() {
        String s = "";
        for (int i = 0; i < 100; i++) {
            s += i;
        }
    }
}


Код: 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.
public class tmp.tmp.tmp {
  public tmp.tmp.tmp();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void xxx();
    Code:
       0: ldc           #2                  // String
       2: astore_0
       3: iconst_0
       4: istore_1
       5: iload_1
       6: bipush        100
       8: if_icmpge     28
      11: aload_0
      12: iload_1
      13: invokestatic  #3                  // Method java/lang/Integer.toString:(I)Ljava/lang/String;
      16: invokedynamic #4,  0              // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
      21: astore_0
      22: iinc          1, 1
      25: goto          5
      28: return

  public static void xxx1();
    Code:
       0: ldc           #2                  // String
       2: astore_0
       3: iconst_0
       4: istore_1
       5: iload_1
       6: bipush        100
       8: if_icmpge     25
      11: aload_0
      12: iload_1
      13: invokedynamic #5,  0              // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;I)Ljava/lang/String;
      18: astore_0
      19: iinc          1, 1
      22: goto          5
      25: return

  public static void xxx2();
    Code:
       0: ldc           #2                  // String
       2: astore_0
       3: iconst_0
       4: istore_1
       5: iload_1
       6: bipush        100
       8: if_icmpge     25
      11: aload_0
      12: iload_1
      13: invokedynamic #5,  0              // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;I)Ljava/lang/String;
      18: astore_0
      19: iinc          1, 1
      22: goto          5
      25: return
}
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706448
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,
содержание отсутствует у ТВОЕГО сообщения, так что перестань замусоривать тему. В других сообщениях оно есть и я получил из обсуждения полезную информацию, хотя не полный ответ на свой вопрос.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706449
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyКак думаешь, что лично тебя заставляет её "возвращать"?
Что меня заставляет модерировать два подфорума?
Что меня заставляет подсказывать одному математику на пенсии как вообще пишут алгоритмы?
Я не знаю. Это - загадочный вопрос и корни его лежат далеко не в It.
Вобщем оффтоп это.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706454
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,
что оптимизаторы уже лет 10 выносят инвариант из цикла.

Не надо гадать, что делают компиляторы вообще, когда мы видим сгенерированный байт-код, в котором это не сделано. Но Siemargl - уникум, всегда умудряется написать максимально наоборот тому, что есть.

Вадя,
java 10

Осталось узнать, что делает функция makeConcatWithConstants. Вдруг она внутри тот же самый StringBuilder создает?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706455
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewОсталось узнать, что делает функция makeConcatWithConstants. Вдруг она внутри тот же самый StringBuilder создает?
http://qaru.site/questions/61777/how-is-string-concatenation-implemented-in-java-9
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706468
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene Newbooby,
содержание отсутствует у ТВОЕГО сообщения, так что перестань замусоривать тему. В других сообщениях оно есть и я получил из обсуждения полезную информацию, хотя не полный ответ на свой вопрос.
Милай, то сообщение не табе писалось.
Там для табе содержания и не планировалось, не табе и письма писать.


Между прочим, открой же тайну, вопрос-то у тебя какой ,
по состоянию на текущий момент?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706473
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
http://qaru.site/questions/61777/how-is-string-concatenation-implemented-in-java-9

Спасибо. Это интересно. Я понял, что можно каким то образом выбирать реализацию конкатенации во время выполнения. Не понятно только одно - каким образом работают предоставляемые варианты, что у них внутри. "Вызывает что то, помещенное внутри java.lang.StringBuilder", что именно это что то делает - не видно.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706501
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewНе понятно только одно - каким образом работают предоставляемые варианты, что у них внутри. "Вызывает что то, помещенное внутри java.lang.StringBuilder", что именно это что то делает - не видно.тут есть не только это... надо учесть еще что jvm производит оптимизацию во время выполнения , и что там делается одним разработчикам известно. и ещё много что зависит от количества раз использования данного фрагмента кода.
поэтому если есть "проблемный" кусок кода - надо ставить "измеритель " времени выполнения и выбирать оптимальный вариант кода.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706512
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene Newвадя,
http://qaru.site/questions/61777/how-is-string-concatenation-implemented-in-java-9

Спасибо. Это интересно. Я понял, что можно каким то образом выбирать реализацию конкатенации во время выполнения. Не понятно только одно - каким образом работают предоставляемые варианты, что у них внутри. "Вызывает что то, помещенное внутри java.lang.StringBuilder", что именно это что то делает - не видно.

Вадя спасибо, очень интересно.

Ну так там вполне очевидно. Вместо жесткой компиляции конкатенации через stringbuilder теперь компилятор генерит код вызова специального метода и его (метод) можно улучшать до бесконечности не затрагивая сам компилятор и не ломая предыдущую реализацию.

Заранее зная распределение данных можно повысить эффективность реализации. Ну например если заранее известен необходимый размер буфера чтобы избежать расширения и копирования.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706513
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewАлексей Шипилев - Катахезис String.
Блин, он РЕАЛЬНО под НАРКОТОЙ это писал. Или он шизофренией страдает.
...
Самое обидное, что про 10-ю версию я ничего не нашел, а ведь шизоидно-амфетаминовый бред прочитал.
...

Ну по внешнему виду автора видно, что с головой что то не так.



ВОТ ЭТО ПОВОРОТ

JEP 280: Indify String Concatenation
Owner Aleksey Shipilev
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706520
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingEugene NewАлексей Шипилев - Катахезис String.
Блин, он РЕАЛЬНО под НАРКОТОЙ это писал. Или он шизофренией страдает.
...
Самое обидное, что про 10-ю версию я ничего не нашел, а ведь шизоидно-амфетаминовый бред прочитал.
...

Ну по внешнему виду автора видно, что с головой что то не так.



ВОТ ЭТО ПОВОРОТ

JEP 280: Indify String Concatenation
Owner Aleksey Shipilev
Да. Стиль подачи материала у Шипилева весьма эпотажный. Но я-же говорю. Это человек "от системы".
Собсно если гуглить русскоязычные материалы по перформансу то основные двигатели этой активности
это и есть Шипилев и Елизаров. За англоязычных - не скажу. Я их мало слушал. Так в основном по ссылкам
JBreak, JPoint, Jug.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706524
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я грепнул транковую ветку OpenJDK по его фамилии. Сейчас (по состоянию на 23-Sep 2018 она соответствует Java-11)

Код: java
1.
2.
$ ~/git/openjdk/src/java.base/share/classes$ grep -r -F "Shipilev" --include="*java"
java/lang/invoke/StringConcatFactory.java: * @author Aleksey Shipilev



Там еще есть 2 со-автора этой библиотечки.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706553
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ну, в некотором смысле, это мелочёвка.
Сжатые строки - вроде бы последнее, что он делал в Oracle.
Думаю, что ConcatFactory - это что-то вроде работы в рамках сопровождения...

он вроде бы в Red Hat c 16го года и, главным образом, пилит Shenandoah GC.
На своем сайте он в красной шляпе теперь, и со ссылками на исходный код.

А стиль да - молодёжный. Ребяты, это не для вас, но я вам расскажу....
Это не просто, а очень просто. Впрочем, о чем я говорю - вряд ли вам это вообще понять...
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706574
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyА стиль да - молодёжный. Ребяты, это не для вас, но я вам расскажу....
Это не просто, а очень просто. Впрочем, о чем я говорю - вряд ли вам это вообще понять...
Меня самого раздражают "смищные щютки" и демотиваторы в докладах. Ума не приложу зачем они.
Но в принципе способность рассказать сложные вещи очень простым языком - это очень хороший навык.
Что-то там было в лидерских тренингах про "умение рассказать ребенку постулаты Эйнштейна"...
Поэтому Шипилёву - плюс за доходчивость.

Кстати в последнее время общаюсь с одним очень нудным математиком.
Этот господин совершенно не может кратко и однозначно ответить на вопрос. Кажется что его в принципе не научили
формулировать мысли кратко. А это - минус.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706590
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяEugene NewНе понятно только одно - каким образом работают предоставляемые варианты, что у них внутри. "Вызывает что то, помещенное внутри java.lang.StringBuilder", что именно это что то делает - не видно.тут есть не только это... надо учесть еще что jvm производит оптимизацию во время выполнения , и что там делается одним разработчикам известно. и ещё много что зависит от количества раз использования данного фрагмента кода.
поэтому если есть "проблемный" кусок кода - надо ставить "измеритель " времени выполнения и выбирать оптимальный вариант кода.
В идеале даже после StringBuilder-овской оптимизации мы должны стартовать JMH-тесты и мерять что получилось.
Готов спорить на бутылку виски что в обычном ентерпрайзе данная операция не будет узким местом. Там обычно ожидания
стоят на работе с БД и Networking.

Данный синтетический фрагмент кода который мы обсуждаем выдает нам константу которую можно даже кешировать
поэтому пути для достижения перформанса идут гораздо дальше стринг-билдера.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706593
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
да, я понял что он не с улицы.

Но в принципе способность рассказать сложные вещи очень простым языком
Увы, у Шипилова нет этой способности. Скорее наоборот - запутывание. Судя по всему нет и полного понимания вещей о которых он говорит. При этом держит свою аудиторию за толпу имбецилов.

общаюсь с одним очень нудным математиком.
Возможно, он стремится быть как можно более точным.

лидерских тренингах про "умение рассказать ребенку постулаты Эйнштейна"
Они как обычно все перепутали и сделали это намеренно.

"Если учёный не может объяснить уборщице, которая убирается у него в лаборатории, смысл своей работы, то он сам не понимает, что он делает." (c) Резерфорд.

Это совсем не одно и то же.

Судя по статье Дейкстры у США давно проблемы https://www.beroal.in.ua/article/dijkstra/ewd1165.html :

"Посредственность не доверяет выдающемуся человеку, потому что не понимает его, и боится его, потому что он способен делать вещи за гранью понимания."
"Менеджеры имеют совершенно стандартные боевые кличи, которые не изменились со времён Второй мировой войны. На учёных нападают как на личностей — на непокорных, неприкрытых индивидуалистов, управлять которыми намного сложнее, чем комитетами — приказывая работать в команде."
"даже высокотехнологичные компании стремительно теряют учёных и инженеров"
--
Возвращаясь к нашему любимому String, замечу еще раз, что пока не увидим деталей реализации этой новой функции, мы вряд ли точно узнаем, что изменится и изменится ли что то вообще и чем отличаются разные предлагаемые варианты между собой.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706595
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewУвы, у Шипилова нет этой способности. Скорее наоборот - запутывание. Судя по всему нет и полного понимания вещей о которых он говорит. При этом держит свою аудиторию за толпу имбецилов.

Ну про ваш критицизм мы все уже поняли. Но где-же последующее предложение? Очевидно
вы знаете языки и технологии где этот кейс реализован лучше?

Прошу вас! Не стесняйтесь.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706597
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Очевидно вы знаете языки и технологии где этот кейс реализован лучше?

Я не совсем понял вопрос. Нужны примеры лучшего изложения тонкостей языка внутренних механизмов его реализации или лучшей реализации String?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706598
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene Newобщаюсь с одним очень нудным математиком.
Возможно, он стремится быть как можно более точным.

Когда говоришь - ВОТ ЭТИ ПРЯМЫЕ ПАРАЛЛЕЛЬНЫ! Тут-же набегают Лобачевский с Риманом и говорят - это смотря
как посмотреть... Может и параллельны а может и нет....

Вобщем топик сходит из обсуждения конкретной задачи входит в сложную философскую линию допущений
где и сама задача замыливается а тезисы ораторов сводятся к тому чтобы напустить побольше туману и не дать
конкретного ответа никогда.

Есть математика где можно договориться об условиях. И есть - философия
где "петух - суть человек по определению Платона....".
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706600
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene Newmayton,
Очевидно вы знаете языки и технологии где этот кейс реализован лучше?

Я не совсем понял вопрос. Нужны примеры лучшего изложения тонкостей языка внутренних механизмов его реализации или лучшей реализации String?
Нет. Вы покритиковали работу со строками в java.
Очевидно у вас был опыт либо работы с другими ЯП где эта работа реализована лучше.
Либо вы знаете как разработать другой ЯП (компиллятор или рантайм) где это лучше.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706603
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewСудя по статье Дейкстры у США давно проблемы https://www.beroal.in.ua/article/dijkstra/ewd1165.html :

"Посредственность не доверяет выдающемуся человеку, потому что не понимает его, и боится его, потому что он способен делать вещи за гранью понимания."
"Менеджеры имеют совершенно стандартные боевые кличи, которые не изменились со времён Второй мировой войны. На учёных нападают как на личностей — на непокорных, неприкрытых индивидуалистов, управлять которыми намного сложнее, чем комитетами — приказывая работать в команде."
"даже высокотехнологичные компании стремительно теряют учёных и инженеров"

Я удивляюсь как вы втащили в эту дему Дейкстру.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39706604
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonГотов спорить на бутылку виски что в обычном ентерпрайзе данная операция не будет узким местом. Там обычно ожидания
стоят на работе с БД и Networking.тут и спорит нечего, в одном из проектов для реализации "серверного рендеринга" строил строку html таблицы для порядка 2-3 тысяч записей со сложным строением ячейки таблицы - само построение стрингблдером было приемлемым для такого объёма.
...
Рейтинг: 0 / 0
25 сообщений из 293, страница 8 из 12
Форумы / Java [игнор отключен] [закрыт для гостей] / Что не так с Java String и как вы с этим боретесь?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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