 |
|

04.02.2016, 00:57
|
|
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами:
5732336
Репутация:
0
|
|
Сообщение от echipachenko
1. Я более чем уверен что пока выполняется код метода, команда точно непоменяется, а это значит что getCommand() вернёт одинаковый результат.
А даже если меняется - то это в корне не правильно.
Ибо вы при первом вызове к примеру сравниваете результат с "предполагаемым значением", а так как команда может поменяться, то у Вас есть случай непопадания не под один ИФ, потому что при первой проверке команда была одна, а при второй другая, но она могла подойти под первый иф, в следствии чего обработка не запустится.
3. Имеется ввиду сделать так: boolean isEmpty = eventName.isEmpty(); if (!isEmpty) {....}
4. Во первых это не фреймворк. Во вторых конкатенация во всех подобных случаях ведёт к неявному созданию StringBuilder-a, смысл тогда юзать текстбилдер пропадает. И что бы Вы понимали, в чём отличия фреймворка от библиотекы: фреймворк дает Вам Flow и LifeCycle, которому Вы должны подчинятся.
Согласитесь, этот код не идеален. А вот используется этот класс или не используется - это уже не моё дело.
по 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.
Источник
Кто опровергнет этот факт?
|
|
|

04.02.2016, 16:30
|
|
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами:
5407316
Репутация:
0
|
|
Сообщение от Visor123
А теперь давайте узнаем немного о конкатенции строк оператором "+":
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.
Источник
Кто опровергнет этот факт?
Я не хочу показать, чью сторону я принимаю и принимаю ли я вообще в этом споре, сказать сложно, но раз уж такое дело, то вот Вам задачка.
Есть два куска кода :
Код:
[CODE]
String s = "";
for(int i = 0; i
Код:
[CODE]
StringBuilder sb = new StringBuilder("");
for(int i = 0; i
Какой из участков выполнится быстрее? И как время выполнение кода, если количество итераций в цикле увеличится в обоих случаях? Ведь это условная величина.
Не имеет значения, как Вы получите ответ - прогоните этот код, или из своего опыта сможете сказать, важно чтобы Вы поняли, зачем я задаю такой вопрос.
|
|
|

04.02.2016, 16:46
|
|
Постоянный
Регистрация: 13.04.2015
Сообщений: 454
С нами:
5834308
Репутация:
2128
|
|
[QUOTE="velafrys"]
Я не хочу показать, чью сторону я принимаю и принимаю ли я вообще в этом споре, сказать сложно, но раз уж такое дело, то вот Вам задачка.
Есть два куска кода :
Код:
[CODE]
String s = "";
for(int i = 0; i
|
|
|

04.02.2016, 16:51
|
|
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами:
5407316
Репутация:
0
|
|
Сообщение от GenCloud
2 вариант быстрей. Но при увеличении итерации сжирает больше ОЗУ
Как часто тебе говорят, что ты в каждой бочка затычка?
Вопрос был адресован Визору, а не мамкиным погромистам.
|
|
|

04.02.2016, 17:05
|
|
Постоянный
Регистрация: 13.04.2015
Сообщений: 454
С нами:
5834308
Репутация:
2128
|
|
Сообщение от velafrys
Как часто тебе говорят, что ты в каждой бочка затычка?
Вопрос был адресован Визору, а не мамкиным погромистам.
[OFF]Рили? "Вам" это епт бля кому. Ну на счет мамкиным... кхем, а вы мсье нонейм откуда вылезли?[/OFF]
|
|
|

04.02.2016, 17:56
|
|
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами:
5407316
Репутация:
0
|
|
Сообщение от GenCloud
[OFF]Рили? "Вам" это епт бля кому. Ну на счет мамкиным... кхем, а вы мсье нонейм откуда вылезли?[/OFF]
Ты недавно там на ошибки указывал, да?
Если написано "Вам", а не "вам", то как думаешь - кому я написал?
Твой уровень репутации на зоне/здесь не поднимает твой уровень как разработчика.
Ровно как и жизненный опыт Визора не поднимает его уровень.
|
|
|

05.02.2016, 16:16
|
|
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами:
5732336
Репутация:
0
|
|
Сообщение от GenCloud
[OFF]Рили? "Вам" это епт бля кому. Ну на счет мамкиным... кхем, а вы мсье нонейм откуда вылезли?[/OFF]
Администрация, обратите внимания: выродок(точная типизация) оскорбил человека.
Это один из примеров в рассказе про "ужимки пидаров", который будет позже.
|
|
|

05.02.2016, 16:28
|
|
Новичок
Регистрация: 21.01.2010
Сообщений: 0
С нами:
8581120
Репутация:
0
|
|
Close без лишних вопросов.
|
|
|

05.02.2016, 17:36
|
|
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами:
5732336
Репутация:
0
|
|
[QUOTE="velafrys"]
Я не хочу показать, чью сторону я принимаю и принимаю ли я вообще в этом споре, сказать сложно, но раз уж такое дело, то вот Вам задачка.
Есть два куска кода :
Код:
[CODE]
String s = "";
for(int i = 0; i
|
|
|

05.02.2016, 18:20
|
|
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами:
5407316
Репутация:
0
|
|
Сообщение от Visor123
Я не тестировал, но предположу что быстрее будет на ассемблере
Не получится перевести стрелку в обратную сторону, каждое мое утверждение либо можно подтвердить, либо опровергнуть, но только самостоятельно. Пока сообщение ничего не подтверждает и не опровергает.
Не нужно воспринимать сообщения, который Вас не поддерживает как поддержку GenCloud, ровно как и вопросы, на которые Вы не можете ответить.
GenCloud уже ответил на вопрос - второй участок кода выполнится быстрее.
К чему я его задавал?
Я просто хотел показать, что писать нормальнонужно сразу.Не нужно мне говорить, мол, "код не оптимизирован" и все такое. Это не тот случай, чтобы простые вещи оптимизировать когда-то там. Нужно использовать StringBuilder, а не рассказывать кулстори. В любом случае, Ваш код менее производителен, в плане этих конкатенаций в цикле.
И я даже не знаю, удивляться мне или нет тому, что Вы не смогли прямо ответить на вопрос, а задвигаете речи про ассемблер.
Здесь "оптимизация" не уровня ассемблерных ставок, а скорее хорошего тона, или просто знание базовых вещей.
Опровергнете это?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|