Сообщений: 32
Тем: 3
Зарегистрирован: Jan 2014
Репутация:
72
GabberBaby Написал:Как меряли производительность ? Я уверен, что ты просто что-то настроил криво либо использовал старую версию пула.
В любом случае я больше верю jmh бенчмаркам, чем пустословию без единого доказательства.
JMetter-ом естественно
Поверь мне, будучи Enterprise разработчком - очень трудно ошибиться в таких ситуациях, когда на проект пытаешься поставить новый CP
Сообщений: 437
Тем: 7
Зарегистрирован: May 2011
Репутация:
2,580
Dolwin Написал:JMetter-ом естественно
Поверь мне, будучи Enterprise разработчком - очень трудно ошибиться в таких ситуациях, когда на проект пытаешься поставить новый CP
Я имел ввиду, чем ты измерял что hikaricp медленнее dbcp. Или это просто "на глазок", что есть очень тупо ?
А быть "enterprise разработчиком" значит работать с кучей легаси говна и всё.
Сообщений: 252
Тем: 2
Зарегистрирован: Mar 2012
Репутация:
902
GabberBaby Написал:Я имел ввиду, чем ты измерял что hikaricp медленнее dbcp. Или это просто "на глазок", что есть очень тупо ?
А быть "enterprise разработчиком" значит работать с кучей легаси говна и всё.
Это утверждение спорно. Например, WS - это легаси? SOA будем пилить на уровне io/nio и разбора XML на уровне "if node.equals("requestBody")"?
Вот уж где правда куча легаси и хардкода, так это, например, здесь:
Код: case 2: // Установка уже взятого саба (см case 5)
html.append("<br>Переключить саб-класс:<br>");
final int baseClassId = activeChar.getBaseClassId();
if(playerClassList.size() < 2)
html.append("У вас нет саб-классов для переключения, но вы можете добавить его прямо сейчас<br><a action=\"bypass _bbscareer;sub;1\">Добавить саб.</a>");
else
{
html.append("Какой саб-класс вы желаете использовать?<br>");
if(baseClassId == activeChar.getActiveClassId())
html.append(HtmlUtils.htmlClassName(activeChar.getActiveClassId())
+ " <font color=\"LEVEL\">(Базовый)</font><br><br>");
else
html.append("<a action=\"bypass _bbscareer;sub;5 " + baseClassId + "\">"
+ HtmlUtils.htmlClassName(activeChar.getActiveClassId()) + "</a> "
+ "<font color=\"LEVEL\">(Базовый)</font><br><br>");
for(SubClass subClass : playerClassList.values())
{
if(subClass.isBase())
continue;
int subClassId = subClass.getClassId();
if(subClassId == activeChar.getActiveClassId())
html.append(HtmlUtils.htmlClassName(activeChar.getActiveClassId()) + "<br>");
else
html.append("<a action=\"bypass _bbscareer;sub;5 " + subClassId + "\">"
+ HtmlUtils.htmlClassName(activeChar.getActiveClassId()) + "</a><br>");
}
}
break;
А вот, к примеру, другой подход:
Код: <tr>
<td>
{{ stringHolder.getNotNull(player, "community.career.subclass.control.can.switch.desc") }}
</td>
</tr>
<tr>
<td height="15"></td>
</tr>
<tr>
<td>
<center>
<table>
<tr>
{% for subclass in sortedSubclasses %}
{% if player.getActiveClassId != subclass.getClassId %}
{% set subcId = ["class.name.", subclass.getClassId]|join %}
<td>
<center>
<button value="{{ stringHolder.getNotNull(player, subcId) }}"
action="bypass _bbscareer:subclass:switchto:{{ subclass.getClassId }}"
width=150
height=25
back="L2UI_CT1.Button_DF_Down"
fore="L2UI_CT1.Button_DF">
</center>
</td>
{% endif %}
{% endfor %}
</tr>
</table>
</center>
</td>
</tr>
Есть разница кода в плане читабельности и рефакторинг-пригодности? Вот ровно то же самое можно сказать про многие моменты. Почему вы так сразу отрицательно отзываетесь о более высокоуровневых решениях? Конечно, смотря что понимать под Enterprise.
По моему сугубо личному мнению, заниматься Enterpise - это не только пользовать какие-то стеки технологий и фреймворки. Это и тип мышления. А нахардкодить if-else блоков на 100500 случаев может каждый. Да и вообще я бы не делил Enterprise / не Enterpise, не совсем это верно. Можно вообще все на plain java сделать, вопрос только сколько вы времени потратите и сколько выграете в оверхеде? А главное, как вы потом это будете сопровождать? Очень любопытно посмотреть как сделать без фреймов SOA/WS/WS-Security, например, да еще и накрыть СКЗИ сверху. С учетом сегодняшнего развития аппаратной части этот вопрос очень спорен. Мы же не под микроконтроллеры и какие-то кастомные платформы пишем код, где каждый байт на счету.
Сообщений: 437
Тем: 7
Зарегистрирован: May 2011
Репутация:
2,580
ProDev Написал:Это утверждение спорно. Например, WS - это легаси? SOA будем пилить на уровне io/nio и разбора XML на уровне "if node.equals("requestBody")"?
Вот уж где правда куча легаси и хардкода, так это, например, здесь:
Код: case 2: // Установка уже взятого саба (см case 5)
html.append("<br>Переключить саб-класс:<br>");
final int baseClassId = activeChar.getBaseClassId();
if(playerClassList.size() < 2)
html.append("У вас нет саб-классов для переключения, но вы можете добавить его прямо сейчас<br><a action=\"bypass _bbscareer;sub;1\">Добавить саб.</a>");
else
{
html.append("Какой саб-класс вы желаете использовать?<br>");
if(baseClassId == activeChar.getActiveClassId())
html.append(HtmlUtils.htmlClassName(activeChar.getActiveClassId())
+ " <font color=\"LEVEL\">(Базовый)</font><br><br>");
else
html.append("<a action=\"bypass _bbscareer;sub;5 " + baseClassId + "\">"
+ HtmlUtils.htmlClassName(activeChar.getActiveClassId()) + "</a> "
+ "<font color=\"LEVEL\">(Базовый)</font><br><br>");
for(SubClass subClass : playerClassList.values())
{
if(subClass.isBase())
continue;
int subClassId = subClass.getClassId();
if(subClassId == activeChar.getActiveClassId())
html.append(HtmlUtils.htmlClassName(activeChar.getActiveClassId()) + "<br>");
else
html.append("<a action=\"bypass _bbscareer;sub;5 " + subClassId + "\">"
+ HtmlUtils.htmlClassName(activeChar.getActiveClassId()) + "</a><br>");
}
}
break;
А вот, к примеру, другой подход:
Код: <tr>
<td>
{{ stringHolder.getNotNull(player, "community.career.subclass.control.can.switch.desc") }}
</td>
</tr>
<tr>
<td height="15"></td>
</tr>
<tr>
<td>
<center>
<table>
<tr>
{% for subclass in sortedSubclasses %}
{% if player.getActiveClassId != subclass.getClassId %}
{% set subcId = ["class.name.", subclass.getClassId]|join %}
<td>
<center>
<button value="{{ stringHolder.getNotNull(player, subcId) }}"
action="bypass _bbscareer:subclass:switchto:{{ subclass.getClassId }}"
width=150
height=25
back="L2UI_CT1.Button_DF_Down"
fore="L2UI_CT1.Button_DF">
</center>
</td>
{% endif %}
{% endfor %}
</tr>
</table>
</center>
</td>
</tr>
Есть разница кода в плане читабельности и рефакторинг-пригодности? Вот ровно то же самое можно сказать про многие моменты. Почему вы так сразу отрицательно отзываетесь о более высокоуровневых решениях? Конечно, смотря что понимать под Enterprise.
По моему сугубо личному мнению, заниматься Enterpise - это не только пользовать какие-то стеки технологий и фреймворки. Это и тип мышления. А нахардкодить if-else блоков на 100500 случаев может каждый. Да и вообще я бы не делил Enterprise / не Enterpise, не совсем это верно. Можно вообще все на plain java сделать, вопрос только сколько вы времени потратите и сколько выграете в оверхеде? А главное, как вы потом это будете сопровождать? Очень любопытно посмотреть как сделать без фреймов SOA/WS/WS-Security, например, да еще и накрыть СКЗИ сверху. С учетом сегодняшнего развития аппаратной части этот вопрос очень спорен. Мы же не под микроконтроллеры и какие-то кастомные платформы пишем код, где каждый байт на счету.
Да я ничего не утверждаю, мне самому нравится использовать фреймворки вместо велосипедов, просто меня немного разозлило, что человек ворвался в трид с криками, что hikaricp - медленное говно, без каких-либо пруфов, когда в это же время любой человек может запустить бенчмарки, которые валяются в гитхабе и убедится, что действительно быстрее других коннект пулов.
Использовать шаблонизатор для запила хтмлок кстати тоже такое не очень дело я считаю, так как каждому новому разрабу надо будет учиться синтаксису этого шаблонизатора. Обычный хтмль с реплейсом нормально заезжают, учитывая, что при переходе на новые хроники можно будет тупо взять хтмлки с птски и всё будет работать. Но это конечно касается только л2 серверов.
Сообщений: 252
Тем: 2
Зарегистрирован: Mar 2012
Репутация:
902
GabberBaby Написал:Да я ничего не утверждаю, мне самому нравится использовать фреймворки вместо велосипедов, просто меня немного разозлило, что человек ворвался в трид с криками, что hikaricp - медленное говно, без каких-либо пруфов, когда в это же время любой человек может запустить бенчмарки, которые валяются в гитхабе и убедится, что действительно быстрее других коннект пулов.
Использовать шаблонизатор для запила хтмлок кстати тоже такое не очень дело я считаю, так как каждому новому разрабу надо будет учиться синтаксису этого шаблонизатора. Обычный хтмль с реплейсом нормально заезжают, учитывая, что при переходе на новые хроники можно будет тупо взять хтмлки с птски и всё будет работать. Но это конечно касается только л2 серверов.
Тут прокомментировать не могу - HikariCP даже опробовать не успел. Из темы так и не понял, уловил ли кто на боевом решении разницу по производительности (уловил в смысле не "на глазок", а объективно по различным метрикам).
Да, выше две крайности. Replace вполне хорошо подходит, но только не тот ад, что выше в примере. Мало того, что это тяжело рефакторится и сопровождается, это еще и не локализовано по-нормальному. То есть сейчас взять и перевести так просто не получится, да и делегировать эту задачу кому-то из датапакеров тоже так просто не выйдет. В общем, неважно что используется для решения задачи, главное, чтобы оно было эстетично и красиво
Сообщений: 437
Тем: 7
Зарегистрирован: May 2011
Репутация:
2,580
ProDev Написал:Тут прокомментировать не могу - HikariCP даже опробовать не успел. Из темы так и не понял, уловил ли кто на боевом решении разницу по производительности (уловил в смысле не "на глазок", а объективно по различным метрикам).
Я когда профилировал заметил, что время жизни коннектов к бд стало меньше (в yourkit профайлере есть такая статистика) в среднем в 10 раз. До этого был bonecp.
ProDev Написал:В общем, неважно что используется для решения задачи, главное, чтобы оно было эстетично и красиво
Кэп.
Сообщений: 252
Тем: 2
Зарегистрирован: Mar 2012
Репутация:
902
GabberBaby Написал:Я когда профилировал заметил, что время жизни коннектов к бд стало меньше (в yourkit профайлере есть такая статистика) в среднем в 10 раз. До этого был bonecp.
Кэп.
Уже показатель. А BoneCP, в свою очередь, по бенчам быстрее уже устоявшегося commons-dbcp. Вопрос только в стабильности на продакшене, кто-то уже имел опыт внедрения?
Спасибо, кэп
Сообщений: 1,912
Тем: 56
Зарегистрирован: Jan 2009
Репутация:
12,921
ProDev Написал:Есть разница кода в плане читабельности и рефакторинг-пригодности? Вот ровно то же самое можно сказать про многие моменты. Почему вы так сразу отрицательно отзываетесь о более высокоуровневых решениях? Конечно, смотря что понимать под Enterprise.
По моему сугубо личному мнению, заниматься Enterpise - это не только пользовать какие-то стеки технологий и фреймворки. Это и тип мышления. А нахардкодить if-else блоков на 100500 случаев может каждый. Да и вообще я бы не делил Enterprise / не Enterpise, не совсем это верно. Можно вообще все на plain java сделать, вопрос только сколько вы времени потратите и сколько выграете в оверхеде? А главное, как вы потом это будете сопровождать? Очень любопытно посмотреть как сделать без фреймов SOA/WS/WS-Security, например, да еще и накрыть СКЗИ сверху. С учетом сегодняшнего развития аппаратной части этот вопрос очень спорен. Мы же не под микроконтроллеры и какие-то кастомные платформы пишем код, где каждый байт на счету.
Шаблонизатор в диалогах это хорошая вещь. Могу сказать Вы не первый кто додумался юзать шаблонизатор в диалогах.
Могу сказать ещё, в далеком прошлом, я переписал весь код Овера, который отвечает за Append в диалогах.
И не нужно было хардкодить. И не только это)
Сообщений: 2,303
Тем: 24
Зарегистрирован: Sep 2010
Репутация:
5,617
Шаблонизаторы в HTML Николай уже давно юзал у себя, даже вот валяется на винте пруф-стаб:
http://rghost.ru/53747736
Другое дело, что они нафиг не нужны, если делается упор на оф-лайк и юзается эмуляция родных интепретаторов байпасов оф-сервера. Админка (единственный повод иметь кастом хтмл-ки в клиенте) по моему скромному мнению вообще должна находиться вне клиента в виде отдельной тулзы от греха подальше.
Сообщений: 252
Тем: 2
Зарегистрирован: Mar 2012
Репутация:
902
VISTALL Написал:Шаблонизатор в диалогах это хорошая вещь. Могу сказать Вы не первый кто додумался юзать шаблонизатор в диалогах.
Могу сказать ещё, в далеком прошлом, я переписал весь код Овера, который отвечает за Append в диалогах.
И не нужно было хардкодить. И не только это)
Я вовсе не к тому, что это какое-то новшество, скорее, к вопросу использования различных тулкитов. Можно и на plain java сделать красиво, но в гибкости все равно будет просадка.
ANZO Написал:Шаблонизаторы в HTML Николай уже давно юзал у себя, даже вот валяется на винте пруф-стаб:
http://rghost.ru/53747736
Другое дело, что они нафиг не нужны, если делается упор на оф-лайк и юзается эмуляция родных интепретаторов байпасов оф-сервера. Админка (единственный повод иметь кастом хтмл-ки в клиенте) по моему скромному мнению вообще должна находиться вне клиента в виде отдельной тулзы от греха подальше.
Спору нет, это вопрос исключительно удобства. Какие-то вещи, согласитесь, удобнее сделать на шаблонах, коммьюнити - яркий тому пример. Чистый html тоже хорошо, но вот только не так, как это в примере выше - это же невозможно разобрать, что и как, слишком запутано.
Спасибо вам за комментарии, интересно пообщаться
|