по 1 - getCommand() всегда вернет ссылку на строку, которая во время рантайма не меняется. Это очевидно.1. Я более чем уверен что пока выполняется код метода, команда точно не поменяется, а это значит что getCommand() вернёт одинаковый результат.
А даже если меняется - то это в корне не правильно.
Ибо вы при первом вызове к примеру сравниваете результат с "предполагаемым значением", а так как команда может поменяться, то у Вас есть случай непопадания не под один ИФ, потому что при первой проверке команда была одна, а при второй другая, но она могла подойти под первый иф, в следствии чего обработка не запустится.
3. Имеется ввиду сделать так: boolean isEmpty = eventName.isEmpty(); if (!isEmpty) {....}
4. Во первых это не фреймворк. Во вторых конкатенация во всех подобных случаях ведёт к неявному созданию StringBuilder-a, смысл тогда юзать текстбилдер пропадает. И что бы Вы понимали, в чём отличия фреймворка от библиотекы: фреймворк дает Вам Flow и LifeCycle, которому Вы должны подчинятся.
Согласитесь, этот код не идеален. А вот используется этот класс или не используется - это уже не моё дело.
А теперь давайте узнаем немного о конкатенции строк оператором "+":
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 вариант быстрей. Но при увеличении итерации сжирает больше ОЗУЯ не хочу показать, чью сторону я принимаю и принимаю ли я вообще в этом споре, сказать сложно, но раз уж такое дело, то вот Вам задачка.
Есть два куска кода :
Код: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 вариант быстрей. Но при увеличении итерации сжирает больше ОЗУ
Как часто тебе говорят, что ты в каждой бочка затычка?
Вопрос был адресован Визору, а не мамкиным погромистам.
Ты недавно там на ошибки указывал, да?Оффтоп:Рили? "Вам" это епт бля кому. Ну на счет мамкиным... кхем, а вы мсье нонейм откуда вылезли?
Администрация, обратите внимания: выродок(точная типизация) оскорбил человека.Оффтоп:Рили? "Вам" это епт бля кому. Ну на счет мамкиным... кхем, а вы мсье нонейм откуда вылезли?
Я не тестировал, но предположу что быстрее будет на ассемблереЯ не хочу показать, чью сторону я принимаю и принимаю ли я вообще в этом споре, сказать сложно, но раз уж такое дело, то вот Вам задачка.
Есть два куска кода :
Код: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); }
Какой из участков выполнится быстрее? И как время выполнение кода, если количество итераций в цикле увеличится в обоих случаях? Ведь это условная величина.
Не имеет значения, как Вы получите ответ - прогоните этот код, или из своего опыта сможете сказать, важно чтобы Вы поняли, зачем я задаю такой вопрос.
Я не тестировал, но предположу что быстрее будет на ассемблере
Не получится перевести стрелку в обратную сторону, каждое мое утверждение либо можно подтвердить, либо опровергнуть, но только самостоятельно. Пока сообщение ничего не подтверждает и не опровергает.
Дописать туда StringBuilder - это типа для чего?Не нужно воспринимать сообщения, который Вас не поддерживает как поддержку GenCloud, ровно как и вопросы, на которые Вы не можете ответить.
GenCloud уже ответил на вопрос - второй участок кода выполнится быстрее.
К чему я его задавал?
Я просто хотел показать, что писать нормально нужно сразу. Не нужно мне говорить, мол, "код не оптимизирован" и все такое. Это не тот случай, чтобы простые вещи оптимизировать когда-то там. Нужно использовать StringBuilder, а не рассказывать кулстори. В любом случае, Ваш код менее производителен, в плане этих конкатенаций в цикле.
И я даже не знаю, удивляться мне или нет тому, что Вы не смогли прямо ответить на вопрос, а задвигаете речи про ассемблер.
Здесь "оптимизация" не уровня ассемблерных ставок, а скорее хорошего тона, или просто знание базовых вещей.
Опровергнете это?
Я не тестировал, но предположу что быстрее будет на ассемблере
Утверждение состоит в том, что есть такая информация по работе с конкатенцией строк - источник я тоже привел, кто хочет может проверить и сообщить результаты.
В данном случае речь идет не о 100000 конкатенций, а о том, что конкатенция строк не такая уж и медленная процедура сама по себе. Вырывание класса без контента целей его написания глупо само по себе и последовательно это будет понятно. И соответственно, что выродок дернул код не понимая, почему он так написан, думая что это говнокод, а так же будет доказано - что выродок - это не оскорбление человек - а именно выродок наглый и тупой.
Не получится перевести стрелку в обратную сторону, каждое мое утверждение либо можно подтвердить, либо опровергнуть, но только самостоятельно. Пока сообщение ничего не подтверждает и не опровергает.
В итоге последовательных рассуждений мы увидим, что это не только не говнокод, и даже что это не плохой код или как там писал "код не идеален", а оптимальное решения для своей задачи и сделанное именно вот так в таком вот классе.
Следующее утверждение такое: код пишется для того, чтобы выполняться. Классы пишутся, чтобы выполнять свою объектную задачу и цель их написания может быть формализована.
Кто опровергнет такое утверждение?
Теперь обратите внимание как обосрался GenCloud - он не в состоянии опровергнуть тот факт, что конкатенция строк на ассемблере будет выполняться быстрее.
Дописать туда StringBuilder - это типа для чего?
Код не просто "не оптимизирован", а он не нуждается в такой "оптимизации" вообще.
Добавление StringBulder сделает из кода говнокод в этом конкретном случае. И абсолютно ничего не решит. Это достаточно очевидный факт. Я так понимаю, что ты этого не понимаешь.
Вот такое простое опровержение фактом. А буду еще факты.
Ты не опроверг еще ни одно утверждение, и особенно утверждение, что код пишется для выполнения - ты не согласен с этим фактом?
Опровержение, не здесь, в вообще код написанный на ассемблере по конкатенции строк будет выполнятся быстрее чем твой конкретный пример на java.
Опровергни это, ты же рассуждаешь о "вообще"
С чего ты решил, что все очерчено рамками твоего примера?StringBuilder - это типа для того, чтобы строку билдить.
Он придуман для этого, именно для этого.
И он работает быстрее, и в коде выглядит приятнее.
Я понять не могу, для Вас качество кода и эффективность работы это не аргумент?
"Код пишется для выполнения" - это по определению, тут доказывать ничего не надо.
Но если выбирать между понятным и эффективным кодом (который выполняется/работает) и просто кодом (который выполняется, фиг знает как, конечно, ведь все в конкатенациях, при этом мысль о том, что каждый раз в итерации цикла будет неявно создаваться экземпляр StringBuilder не дает покоя), то я выбираю первое.
Да жди пока рак на горе свиснет, дискаса не будет с хохло выродками.Теперь обратите внимание как обосрался GenCloud - он не в состоянии опровергнуть тот факт, что конкатенция строк на ассемблере будет выполняться быстрее.
Жду опровержения, или GenCloud обычный клоун.
И обратите внимание как дегенерат GenCloud кривляется, видео выкладывает даже, типа такой шутник.
Шутка состоит в том, что выродка Gencloud поймали и он тут кривляется.
потому что ты не понял что это вообще за класс и какие он выполняет задачи.
А писать на каждую проверку по StringBuilder или что ты там подразумеваешь, это говнокод. Это очевидно, разве не так?
И то, и другое. Совместимые вещи в этом случае.Ты уж определись, ты рассуждаешь о вообще или о конкретной реализации чего, ты знаешь чего?
"В цикле кишат конкатенции"? Где там цикл конкатенций в моем классе?Я вижу кусок кода, где в цикле кишат конкатенации (которые медленнее и неудобнее, в плане поддержки кода), вместо использования .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 и в переменную с явным циклом.И то, и другое. Совместимые вещи в этом случае.
"Еще одно, с чего ты решил что ассемблер - это всегда вставка в java-коде?"
Я не сказал, что всегда. Речь была о конкатенации строк и StringBuilder, а Вы приплели ассемблер.
И вообще, что за игры в презумпцию виновности? Почему кто-то должен что-то опровергать и доказывать?
Я просто привожу факт: склеивание строк исключительно с помощью StringBuilder лучше, нежели с использованием "+".
В ответ же слышу рассказы о том, что GenCloud плохой(скорее всего может оно и так, но я не за этим сюда пришел), из контекста все вырвали, да вообще не знаем этот класс нужен. Да вот только все это не важно.
Плохой участок кода в классе делает класс плохим.
В ответ на это слышу рассказы о том, что вырвали неиспользуемый класс.
Ну раз так, то пока он использовался там было все нормально, а как перестал использоваться - конкатенаций настрочили, да?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?