Да простит меня великий Visor....Не удержалсо

по 1 - getCommand() всегда вернет ссылку на строку, которая во время рантайма не меняется. Это очевидно.
Каждый следующий вызов эквивалентен просто обращению к объекту String по ссылке, поэтому кол-во вызовов ничего не меняет. Это очевидно.
3 - пустая строка - с большой вероятностью это не сложно-вычисляемое значение (тики типа (length ==0) настолько некритичны в общем процессорном времени, что оптимизировать это кеширование в занимаемую память переменную не полезно) - кешировать его уже похоже на говнокод. Это тоже очевидно.
4 - под фреймворком я подразумеваю нативные или другие отдельные классы для работы со строками, по сути создание всех этих классов под каждое значение это не особо хороший стиль.

Код не идеален, но это никак не говнокод. Применение оптимизаций может привести как минимум к плохому стилю и усложнить понимание конструкции.
Таковы факты, которые ты так и не опроверг.

Кроме этого я больше чем уверен, что то что написал ты или GenCloud уж точно не идеально, и вообще неизвестно где, поскольку я пишу очевидные вещи - а в ответ какое-то мутное мычание словами, типа "согласись код не идеален" - "код не идеален" и "говнокод" - это разные вещи. В java априори в 90% случаев можно спорить над идеальностью кода, и еще больше, если рассмотреть его выполнение.
И это тоже факт, который ты не сможешь опровергнуть.

И последний факт - это именно GenCloud создал эту тему и именно чтобы попытаться нагадить мне.
Опровергни этот факт.

А теперь давайте узнаем немного о конкатенции строк оператором "+":
The Java language provides special support for the string concatenation operator ( + ), and for conversion of other objects to strings. String concatenation is implemented through the StringBuilder(or StringBuffer) class and its append method. String conversions are implemented through the method toString, defined by Object and inherited by all classes in Java. For additional information on string concatenation and conversion, see Gosling, Joy, and Steele, The Java Language Specification.

Кто опровергнет этот факт?
 
Последнее редактирование:

Я не хочу показать, чью сторону я принимаю и принимаю ли я вообще в этом споре, сказать сложно, но раз уж такое дело, то вот Вам задачка.
Есть два куска кода :
Код:
String s = "";
for(int i = 0; i < 100000; i++) {
    s += i;
}
Код:
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < 100000; i++) {
    sb.append(i);
}

Какой из участков выполнится быстрее? И как время выполнение кода, если количество итераций в цикле увеличится в обоих случаях? Ведь это условная величина.
Не имеет значения, как Вы получите ответ - прогоните этот код, или из своего опыта сможете сказать, важно чтобы Вы поняли, зачем я задаю такой вопрос.
 
2 вариант быстрей. Но при увеличении итерации сжирает больше ОЗУ
 
2 вариант быстрей. Но при увеличении итерации сжирает больше ОЗУ
Как часто тебе говорят, что ты в каждой бочка затычка?
Вопрос был адресован Визору, а не мамкиным погромистам.
 
Оффтоп:
Рили? "Вам" это епт бля кому. Ну на счет мамкиным... кхем, а вы мсье нонейм откуда вылезли?
 
Ты недавно там на ошибки указывал, да?
Если написано "Вам", а не "вам", то как думаешь - кому я написал?

Твой уровень репутации на зоне/здесь не поднимает твой уровень как разработчика.
Ровно как и жизненный опыт Визора не поднимает его уровень.
 
Реакции: qwerty123 и finfan

    qwerty123

    Баллов: 3
    За сообщение, а так же за грамотность и адекватность.
Администрация, обратите внимания: выродок(точная типизация) оскорбил человека.
Это один из примеров в рассказе про "ужимки пидаров", который будет позже.
 
Последнее редактирование:
Close без лишних вопросов.
 
Я не тестировал, но предположу что быстрее будет на ассемблере
Утверждение состоит в том, что есть такая информация по работе с конкатенцией строк - источник я тоже привел, кто хочет может проверить и сообщить результаты.
В данном случае речь идет не о 100000 конкатенций, а о том, что конкатенция строк не такая уж и медленная процедура сама по себе. Вырывание класса без контента целей его написания глупо само по себе и последовательно это будет понятно. И соответственно, что выродок дернул код не понимая, почему он так написан, думая что это говнокод, а так же будет доказано - что выродок - это не оскорбление человек - а именно выродок наглый и тупой.
Не получится перевести стрелку в обратную сторону, каждое мое утверждение либо можно подтвердить, либо опровергнуть, но только самостоятельно. Пока сообщение ничего не подтверждает и не опровергает.

В итоге последовательных рассуждений мы увидим, что это не только не говнокод, и даже что это не плохой код или как там писал "код не идеален", а оптимальное решения для своей задачи и сделанное именно вот так в таком вот классе.

Следующее утверждение такое: код пишется для того, чтобы выполняться. Классы пишутся, чтобы выполнять свою объектную задачу и цель их написания может быть формализована.
Кто опровергнет такое утверждение?
 

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

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

Опровергнете это?
 
Реакции: kick

    kick

    Баллов: 36
    За сообщение

    Mangol

    Баллов: 33
    Без комментариев

    GenCloud

    Баллов: 14
    За ответ
Дописать туда StringBuilder - это типа для чего?
Код не просто "не оптимизирован", а он не нуждается в такой "оптимизации" вообще.
Добавление StringBulder сделает из кода говнокод в этом конкретном случае. И абсолютно ничего не решит. Это достаточно очевидный факт. Я так понимаю, что ты этого не понимаешь.
Вот такое простое опровержение фактом. А буду еще факты.
Ты не опроверг еще ни одно утверждение, и особенно утверждение, что код пишется для выполнения - ты не согласен с этим фактом?

Я еще раз настаиваю на том факте, что код написанный на ассемблере для конкатенции строк будет работать быстрее чем пример на java.
Опровергни это, ты же рассуждаешь о примере - вот тебе пример.

Еще одно, с чего ты решил что ассемблер - это всегда вставка в java-коде?

И последнее утверждение, с чего ты решил, что все очерчено рамками примера?
Жду
 
Последнее редактирование:
 
Теперь обратите внимание как обосрался GenCloud - он не в состоянии опровергнуть тот факт, что конкатенция строк на ассемблере будет выполняться быстрее.
Жду опровержения, или GenCloud обычный клоун.

И обратите внимание как дегенерат GenCloud кривляется, видео выкладывает даже, типа такой шутник.
 
Последнее редактирование:

StringBuilder - это типа для того, чтобы строку билдить.
Он придуман для этого, именно для этого.
И он работает быстрее, и в коде выглядит приятнее.
Я понять не могу, для Вас качество кода и эффективность работы это не аргумент?

"Код пишется для выполнения" - это по определению, тут доказывать ничего не надо.
Но если выбирать между понятным и эффективным кодом (который выполняется/работает) и просто кодом (который выполняется, фиг знает как, конечно, ведь все в конкатенациях, при этом мысль о том, что каждый раз в итерации цикла будет неявно создаваться экземпляр StringBuilder не дает покоя), то я выбираю первое.
 
С чего ты решил, что все очерчено рамками твоего примера?
Это ключ, ответ на который даст тебе ответ на все остальные твои вопросы.

""Код пишется для выполнения" - это по определению, тут доказывать ничего не надо."
Конкретно для тебя это не очевидно судя из твоих речей, потому что ты не понял что это вообще за класс и какие он выполняет задачи. Когда выродок кинул класс без контекста приложения, это тоже самое что из 4 томов "Война и Мир" взять слово "Война" и сказать что это плохо.
А писать на каждую проверку по StringBuilder или что ты там подразумеваешь, это говнокод. Это очевидно, разве не так?

Ты уж определись, ты рассуждаешь о вообще или о конкретной реализации чего, ты знаешь чего?

Могу так же уверить вас, что на 99,999% выродок тоже не в курсе что он взял за класс.
 
Да жди пока рак на горе свиснет, дискаса не будет с хохло выродками.
 

Я вижу кусок кода, где в цикле кишат конкатенации (которые медленнее и неудобнее, в плане поддержки кода), вместо использования .append.
Какая разница, что делает класс? Или если я вырвал из контекста, то я упустил возможность предположить заведомо неэффективную работу класса?


Речь ведь о цикле идет. Про эти тонны if - я ничего не говорю.
У меня нет цели разводить ругань, и уж тем более поддерживать GenCloud.

И то, и другое. Совместимые вещи в этом случае.


"Еще одно, с чего ты решил что ассемблер - это всегда вставка в java-коде?"
Я не сказал, что всегда. Речь была о конкатенации строк и StringBuilder, а Вы приплели ассемблер.

И вообще, что за игры в презумпцию виновности? Почему кто-то должен что-то опровергать и доказывать?
Я просто привожу факт: склеивание строк исключительно с помощью StringBuilder лучше, нежели с использованием "+".
В ответ же слышу рассказы о том, что GenCloud плохой(скорее всего может оно и так, но я не за этим сюда пришел), из контекста все вырвали, да вообще не знаем этот класс нужен. Да вот только все это не важно.

Плохой участок кода в классе делает класс плохим.
В ответ на это слышу рассказы о том, что вырвали неиспользуемый класс.
Ну раз так, то пока он использовался там было все нормально, а как перестал использоваться - конкатенаций настрочили, да?
 
"В цикле кишат конкатенции"? Где там цикл конкатенций в моем классе?
Покажи конктерное место, где цикл конкатенций и как твой пример относится к моему классу.
То что в одном блоке if идут конкатенции в разные переменные - именно так и нужно для проверок, иначе эту задачу не решить не клонируя класс для множества типов. Или ты думаешь что ты решишь эту задачу?

Не смеши про append. пример приведи))))
Перед этим пример был некорректным для представленного класса.
 
Код:
for (L2EventGroupEngineInstance event: _eventInstances.values()) {
replyMSG.append("<tr><td><font color=\"LEVEL\">" + event.getName() + "</font></td>" + "<td><button value=\"Show\" action=\"bypass -h " + getCommand() + "_show " + event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td><button value=\"Edit\" action=\"bypass -h " + getCommand() + "_edit " + event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td><button value=\"Delete\" action=\"bypass -h " + getCommand() + "_del " + event.getName() + " $name" + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
}
Вот этот цикл.
 
Нельзя совместить "то и другое", ты не тот пример взял - ты его глянь - он очевиден для случая конкатенции в 1 класс StringBuilder и в переменную с явным циклом.
Но для случая "1"+"2" так и со StringBuilder ответ не очевиден, скорее всего что время выполнения будет одинаковым.
В моем классе соединять все строки в 1 переменную StringBuilder - это вообще как тогда проверять что-то?

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