HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #101  
Старый 05.02.2016, 19:52
volond1
Постоянный
Регистрация: 04.02.2016
Сообщений: 566
С нами: 5405674

Репутация: 0


По умолчанию

Я чет не понимаю, если не за хрен кусить так ник нафиг курочить
 
Ответить с цитированием

  #102  
Старый 05.02.2016, 19:55
velafrys
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами: 5407316

Репутация: 0
По умолчанию

Цитата:
Сообщение от Visor123  

В моем классе соединять все строки в 1 переменную StringBuilder - это вообще как тогда проверять что-то?
Что именно проверять, если в этом цикле нет проверок?

Сплошное склеивание строк.
 
Ответить с цитированием

  #103  
Старый 05.02.2016, 19:57
Visor123
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами: 5732336

Репутация: 0


По умолчанию

Цитата:
Сообщение от velafrys  

Код:


Код:
for (L2EventGroupEngineInstance event: _eventInstances.values()) {
replyMSG.append("" + event.getName() + "" + "" + "" + "");
}
Вот этот цикл.
Вообще-то GenCloud не об этом писал, но этот вариант тоже неплох.

Рассматривает 1 строку

replyMSG.append("" + event.getName() + "" + "" + "" + "");

есть высокая вероятность что оптимизатор не будет делать пример, когда каждое объединение будет выполняться с созданием нового StringBulder, было бы глупо так делать, а разработчики java судя по всему не так глупы. Это все может быть как раз переведено в код с 1 классом StringBuilder и append.

Это рассуждения конечно, но и решать сразу что оптимизатор пойдет по медленному пути не правильно.
 
Ответить с цитированием

  #104  
Старый 05.02.2016, 20:04
velafrys
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами: 5407316

Репутация: 0
По умолчанию

В случае с использованием "+" внутри .append() (как у Вас и сделано) код превратится вот в это :

Код:


Код:
replyMSG.append(new StringBuilder("").append(event.getName()).append("").append("").append("").append("").toString());
Т.е. каждую итерацию цикла будет создаваться новый экземпляр StringBuilder.

Зачем это, если Вы уже используете TextBuilder, и можете использовать .append(), вместо использования "+" ?
 
Ответить с цитированием

  #105  
Старый 05.02.2016, 20:06
Visor123
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами: 5732336

Репутация: 0


По умолчанию

Цитата:
Сообщение от velafrys  

Что именно проверять, если в этом цикле нет проверок?
Сплошное склеивание строк.
Да, именно и нужно "склеивание 2 строк" в верхнем блоке с проверками, а в нижнем передано на решение оптимизитора java.

Твои абстрактные рассуждения не помогут решить задачи, выполняемые классом.

Итак даю подсказку. Класс - общий класс иерархии групп-эвентов, содержит в себе решения общие для всех наследуемых его классах. Кол-во эвентов на момент разработки неизвестно, есть вероятность что их будет более 2х, может и 1, пока планируется один.

Ничего необычного в общем-то.

Вторая подсказка - методы данного класса используются только на момент настройки эвентов. Настройка эвентов происходит редко.

Вопрос - нужно ли оптимизацию скорости выполнения без конкатенций в проверках выносить ключевым?

Вопрос - нужно ли оптимизация строки генерирования странички html выносить ключевым?

Вопрос - нужно ли поставить ключевым вопрос ООП и экономии памяти из-за крайне редкого использования?

Цитата:
Сообщение от velafrys  

В случае с использованием "+" внутри .append() (как у Вас и сделано) код превратится вот в это :

Код:


Код:
replyMSG.append(new StringBuilder("").append(event.getName()).append("").append("").append("").append("").toString());
Т.е. каждую итерацию цикла будет создаваться новый экземпляр StringBuilder.
Зачем это, если Вы уже используете TextBuilder, и можете использовать .append(), вместо использования "+" ?
Можно было бы городить велосипед для 2-3 циклов с 1 экземпляром билдера, но для пары-тройки итераций код будет излишним, а вопрос скорости работы не решит. То есть создание 1 или 2 билдеров - это скажем так "оптимизация" весьма не очень полезная, выигрыш может и будет несколько наносекунд, но я считаю, что лаконичность кода в данном случае лучше.

А назвать этот конкретный цикл прямо говнокодом - это уже ни в какие ворота.
 
Ответить с цитированием

  #106  
Старый 05.02.2016, 20:17
velafrys
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами: 5407316

Репутация: 0
По умолчанию

Цитата:
Сообщение от Visor123  

А назвать этот конкретный цикл прямо говнокодом - это уже ни в какие ворота.
А если бы здесь было 9000 ивентов, то можно?

Суть в том, что условности рода "предполагается, количество ивентов не превысит 2-3" не дают права писать подобные конструкции.

Естественно, это Ваш проект, и Вам решать, как Вам удобнее работать и какие условности соблюдать.

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

Настоятельно прошу не пропускать мои сообщения через призму токсичного первого поста GenCloud.
 
Ответить с цитированием

  #107  
Старый 05.02.2016, 20:17
Visor123
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами: 5732336

Репутация: 0


По умолчанию

Мало того, когда 1 итерация цикла, получается что явное объявления билдера перед циклом выглядит громоздко и может претендовать на звание "говнокод".

Или ты (имеется ввиду velafrys) прямо сразу исключаешь такое граничное условие?

Дорогой - это мой проект, мои клиенты и мои потребности - за 8 лет я знаю что и сколько примерно будет. Не будет никаких 9000 эвентов. Их даже много придумать сложно, то есть предметная область в данном случае прогнозируема.


Я в данном случае выступаю и заказчиком.

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

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

Если бы оптимизация была нужна, я бы это делал сразу.
 
Ответить с цитированием

  #108  
Старый 05.02.2016, 20:25
velafrys
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами: 5407316

Репутация: 0
По умолчанию

Тогда зачем доказывать, что в плане эффективности и производительности разницы нет? Ещё и о ассемблере речь.
 
Ответить с цитированием

  #109  
Старый 05.02.2016, 20:31
Visor123
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами: 5732336

Репутация: 0


По умолчанию

Цитата:
Сообщение от velafrys  

Тогда зачем доказывать, что в плане эффективности и производительности разницы нет? Ещё и о ассемблере речь.
Если речь идет об астрактной работе со строками и их объединением в памяти то реализация на ассемблере с большой вероятностью будет работать быстрее реализации на java.

Но в данном то конкретном случае мы имеем условия, близкие к граничным, когда цикл выполнится 1 раз, и может когда-нибудь 2 раза. Соответственно ответ уже будет другой, скорее всего что будет одинаково для 1 раза.

Итог - говнокод в коде не найден для имеющихся условий, или еще хочешь обсудить какой-то участок?
 
Ответить с цитированием

  #110  
Старый 05.02.2016, 20:41
velafrys
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами: 5407316

Репутация: 0
По умолчанию

Речь идет не о java vs assembler, а о StringBuilder vs "+" in StringBuilder.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...