 |
|

07.02.2016, 01:15
|
|
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами:
5732336
Репутация:
0
|
|
О чем вы тут пишете? В цикле или 0 или 1 итерация.
Так же можете померять время итерации "a"+"b"
То есть к чему цикл в 100000 итераций? Попытка перевести тему в другую сторону - так опять же я дал самый правильный ответ, что для достижения максимальной скорости выполнения нужно писать на ассемблере - и это никто пока не смог опровергнуть.
Корону тут натягивают как раз все кому не лень, посмотрите свои ответы.
Сообщение от WoWan-SM
Первый цикл ~52 секунды
Второй цикл ~ 4 милисекунды
Второй не сжирает, там нечему сжирать.
А вот первый сжирает овердохера с горочкой и если находиться в полной тишине, то можно услышать как скрипит GC
Ага, она не такая уж медленная, она п***ец какая медленная.
Как раз таки наоборот - сделает конфетку.
Не может, пару десятков или сотен мс.
Кто вам сказал про такой бред? Ни один хороший Java программист вам такого никогда не скажет.
Нужно
Нужно
Нужно
И да... getCommand(), если вы сами говорите может в процессе изменятся, то ведь пи***ц может начать твориться, код может в таких случаях либо не выполняться так как надо, либо вообще не выполнятся. Так что надо объявить её обязательно в начале.
Неправильный ответ ни для 0 ни для 1 итерации цикла, измерять нужно то что есть в задаче 1 поста, а не в выдуманном примере, который хочется измерять - там вообще-то все очевидно было еще до него.
getCommand() задается 1 раз при создании объекта.
Насчет добавить StringBuilder Для 0 итераций очень сильно ускорит и сделает конфетку?
Да и вообще у вас ответы противоречат - нельзя выбрать или быстрее или экономнее.
Самый экономный вариант памяти, который при создании объекта занимает минимальное кол-во памяти, другой вариант - это если переписать без конкатенций строк - этот вариант будет самый быстрый, быстрее чем любые StringBuilder. Это очевидно, странно что реальную оптимизацию не никто смог сделать - вы же писали столько слов .... и даже не смогли найти что оптимизировать ....
Почему никто не смог ничего придумать, кроме глупого цикла на 100000 итераций вместо 0-1 реальной итерации - померяйте что будет быстрее при 0-1 итерации предложенного примера - вы узнаете реальный ответ.
Сообщение от echipachenko
В итоге, WoWan-SM и gattsu, доказали то что я писал пару постов назад.
Так что, дорогой visor, Вы не только пишите не оптимизированный, и не читаемый код, но еще и как человек - немного неадекватны.
Вам сделали 100 прямых замечаний, в Вы ищете миллион отмазок.
Смотрите что бы корона с Вашей головы не упала Король Визор123)
Вы опозорились больше всех в этой теме. Вместо того что бы признать свои ошибки - всякую чушь несёте.
Удачи Вам!
Доказали что при 0-1 итерации что? Я что-то не вижу доказательств.
Признать ошибку, что вы меряете то что и так очевидно? Я признаю, что я вижу очевидные ответы и их называю.
Чушь - это придумывать какие-то фантазийные сценарии - код в 1 посту где там 100000 итераций?
Сообщение от velafrys
Не нужно судить по себе или по GenCloud, я не знаю по кому ещё.
Если уж речь идет про "обгадить", то целей таких не преследую. Мне кажется не очень-то похоже, что я в каких-то отношениях с GenCloud, будь то дружеские или партнерские, я же ноунейм, хех.
Старайтесь хладнокровно относиться ко всему, работа - есть работа, личные отношения - есть личные отношения. Вы рьяно начали защищать свой подход сломя голову, а я просто периодически захожу на этот форум, в режиме only-read, т.к. он выглядит приятнее, чем ЗГ. Когда-то в сентябре мне кинули ссылку на тред, а тут стало интересно, чего это профессионалы как дети уже 3 с лишним месяца обсуждают.
Кому я должен доказывать? Вам? А Вы беспристрастны и объективны? - Нет
Потому что речь идет о Вашемкоде, ошибок своих признавать Вы не умеете, хоть частично, пытаетесь навязать свои вкусы и подход (я на тему того, что конкатенация для Вас выглядит удобнее, нежели .append). Вам достаточно было ответить топик стартеру в подобном тоне и роде, и в этом случае тема была бы страниц на 6 меньше :
Я все сказал, удачи Вам в поддержке Вашего проекта.
Вы написали пример, который не отражает предметную область вопроса, о чем может быть обсуждение - это же очевидно. Удачи в фантазийном мире оптимизаций.
|
|
|

07.02.2016, 01:32
|
|
Участник форума
Регистрация: 24.11.2015
Сообщений: 165
С нами:
5509192
Репутация:
1457
|
|
Сообщение от velafrys
В scala, как я понимаю, все иначе?
Scala синтаксически мощнее язык. Но все же та же jvm.
Оптимизация дурное дело, просто как оптимизировать места которые ты не контролируешь, в этом и тупик.
Java(jvm) - как ракета с радиусом поражения. Стоит задача убить человека, Вам придется стрелять ракетой, убьете его, рядом стоящих, еще ближайшие строения в радиусе поражения, уничтожите. Хотя надо просто по тихому убрать.
Самая быстра программа возвращает сразу результат.
ПС я не пьющий человек.
|
|
|

07.02.2016, 01:34
|
|
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами:
5732336
Репутация:
0
|
|
Получилось, один написал глупую тему, другие не смогли понять, что GenCloud не соображает ничего, потом еще один velafrys написал пример, не отражающий предмет вопроса, а потом все бросились отвечать на неправильный вопрос.
Что уж тут сказать, можете одеть короны.
Сообщение от gattsu
Scala синтаксически мощнее язык. Но все же та же jvm.
Оптимизация дурное дело, просто как оптимизировать места которые ты не контролируешь, в этом и тупик.
Java(jvm) - как ракета с радиусом поражения. Стоит задача убить человека, Вам придется стрелять ракетой, убьете его, рядом стоящих, еще ближайшие строения в радиусе поражения, уничтожите. Хотя надо просто по тихому убрать.
Самая быстра программа возвращает сразу результат.
ПС я не пьющий человек.
Ты вроде не глупый, мог бы пояснить народу, что они вообще не о том говорят, что если нужно оптимизировать класс - нужно не StringBuilder добавить, а убрать конкатенции строк, насколько это возможно.
|
|
|

07.02.2016, 01:53
|
|
Постоянный
Регистрация: 13.04.2015
Сообщений: 454
С нами:
5834308
Репутация:
2128
|
|
Сообщение от Visor123
Получилось, один написал глупую тему, другие не смогли понять, что GenCloud не соображает ничего, потом еще один velafrys написал пример, не отражающий предмет вопроса, а потом все бросились отвечать на неправильный вопрос.
Что уж тут сказать, можете одеть короны.
Все поняли что ты необразованное существо, не умеющее... даже не так - не научившееся еще делать выводы и нюхать правильно кокс.
|
|
|

07.02.2016, 02:18
|
|
Участник форума
Регистрация: 24.11.2015
Сообщений: 165
С нами:
5509192
Репутация:
1457
|
|
Код:
[CODE]
package actor;
public class TextBuilder {
class Entry {
String value;
Entry next;
Entry(String value) {
this.value = value;
this.next = null;
}
}
int size = 0;
Entry head;
Entry tail;
public TextBuilder() { }
public TextBuilder append(Object value) {
return append(value.toString());
}
public TextBuilder append(String value) {
size += value.length();
if(head == null)
head = tail = new Entry(value);
else
tail = (tail.next = new Entry(value));
return this;
}
public String toString() {
char[] chars = new char[size];
int offset = 0;
for(Entry target = head ; target != null ; offset += target.value.length(), target = target.next)
for(int i = 0 ; i
Код:
Код:
protected void showMainPage(L2PcInstance player)
{
//NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
TextBuilder reply = new TextBuilder();
reply
.append("")
.append(getName())
.append("")
.append("[ ")
.append(getName())
.append(" ]")
.append("")
.append("")
.append("
Engine instances")
.append("");
for (L2EventGroupEngineInstance event : _eventInstances.values())
reply.
append("").
append(event.getName()).
append("").
append("").
append("").
append("");
reply
.append("")
.append("")
.append("")
.append("")
.append("");
adminReply.setHtml(replyMSG.toString());
player.sendPacket(adminReply);
// Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
player.sendPacket(ActionFailed.STATIC_PACKET);
}
|
|
|

07.02.2016, 02:42
|
|
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами:
5732336
Репутация:
0
|
|
Сообщение от GenCloud
Все поняли что ты необразованное существо, не умеющее... даже не так - не научившееся еще делать выводы и нюхать правильно кокс.
Дегенерат, не нужно делать вывод за других людей. Если ты не понимаешь элементарных вещей - то не значить что все вокруг такие же или глупее тебя.
Сообщение от gattsu
Код:
Код:
package actor;
public class TextBuilder {
class Entry {
String value;
Entry next;
Entry(String value) {
this.value = value;
this.next = null;
}
}
int size = 0;
Entry head;
Entry tail;
public TextBuilder() { }
public TextBuilder append(Object value) {
return append(value.toString());
}
public TextBuilder append(String value) {
size += value.length();
if(head == null)
head = tail = new Entry(value);
else
tail = (tail.next = new Entry(value));
return this;
}
public String toString() {
char[] chars = new char[size];
int offset = 0;
for(Entry target = head ; target != null ; offset += target.value.length(), target = target.next)
for(int i = 0 ; i ")
.append(getName())
.append("")
.append("[ ")
.append(getName())
.append(" ]")
.append("")
.append("")
.append("
Engine instances")
.append("");
for (L2EventGroupEngineInstance event : _eventInstances.values())
reply.
append("").
append(event.getName()).
append("").
append("").
append("").
append("");
reply
.append("")
.append("")
.append("")
.append("")
.append("");
adminReply.setHtml(replyMSG.toString());
player.sendPacket(adminReply);
// Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
player.sendPacket(ActionFailed.STATIC_PACKET);
}
Неправильный ответ, правильный ответ решить вопрос в частном порядке убрав общее решение, это позволит переложить время выполнения на время клонирования решения в частных имплементациях.
То есть, чтобы было понятно: этот класс перестанет существовать, и время его выполнения при любых вариантах будет равен 0.
|
|
|

07.02.2016, 02:51
|
|
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами:
5407316
Репутация:
0
|
|
Речь больше идет о Вашем подходе, а не о эффективности решения.
GenCloud ещё тот клоун, конечно, но вы друг друга стоите, господин Visor123, имхо.
|
|
|

07.02.2016, 02:59
|
|
Участник форума
Регистрация: 24.11.2015
Сообщений: 165
С нами:
5509192
Репутация:
1457
|
|
Сообщение от Visor123
Неправильный ответ, правильный ответ решить вопрос в частном порядке убрав общее решение, это позволит переложить время выполнения на время клонирования решения в частных имплементациях.
То есть, чтобы было понятно: этот класс перестанет существовать, и время его выполнения при любых вариантах будет равен 0.
.................. (спасибо администрации за смайлики)
version 0.1
delete method append(Object);
add new method append(Object...)
Сообщение от Спойлер
Код:
[CODE]
public class TextBuilder {
class Entry {
String value;
Entry next;
Entry(String value) {
this.value = value;
this.next = null;
}
}
int size = 0;
Entry head;
Entry tail;
public TextBuilder() { }
public TextBuilder append(String value) {
size += value.length();
if(head == null)
head = tail = new Entry(value);
else
tail = (tail.next = new Entry(value));
return this;
}
public TextBuilder append(Object...value) {
int i = 0;
if(head == null && value.length > 0) {
String str = value[0].toString();
size += str.length();
head = tail = new Entry(str);
i++;
}
for(; i
Код:
Код:
protected void showMainPage(L2PcInstance player)
{
NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
TextBuilder reply = new TextBuilder();
reply
.append(
"",
getName(),
"",
"[ ",
getName(),
" ]",
"",
"",
"
Engine instances",
""
);
for (L2EventGroupEngineInstance event : _eventInstances.values())
reply
.append(
"",
event.getName(),
"",
"",
"",
""
);
reply
.append(
"",
"",
"",
"",
""
);
adminReply.setHtml(reply.toString());
player.sendPacket(adminReply);
// Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
player.sendPacket(ActionFailed.STATIC_PACKET);
}
|
|
|

07.02.2016, 03:03
|
|
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами:
5732336
Репутация:
0
|
|
Я так понимаю, что вместо того, чтобы немножко подумать все решили, что класс не оптимизирован, потому что содержит конкатенции?
Начнем с того, что почему вы убрали за скобки задачу, стоимость выполнения, а так же стоимость вашего времени?
И второй немаловажный момент - не имплементация определяет задачу, а задача имплементацию.
Проблема всех умников, которые идут по пути оптимизации в том, что они не считают стоимость выполнения и стоимость своего времени. Так же не смотрят на задачу, а только на конечный вариант.
Простой пример - данный класс имеет общее решение задачи, но наиболее быстрым является частное решение задачи, но тогда в каждом частном решении будет клонирование решения этой общей задачи, но уже в более быстром варианте.
Посчитаем стоимость выполнения класса - класс управляет созданием, отображением странички, сохранением и редактированием движка групп-эвента.
Предположим что 2 метода каждый по 1 вызову займут макс 0,5мс. За полгода добавлять движок эвента может понадобится максимум раза 2, создать + написать имя, сохранить. Это пара операций, и больше отображений. Я считаю, что потеря 100мс выполнения за пол года не критично для сервера.
Класс не содержит рекурсий и блокировок и не может вызвать лаг сервера - значить время его выполнения можно считать чистым.
Теперь мое время - при имплементации задач в виде частных случаев общее решение этого класса будет клонировано на частные решения - что потянет мое время как минимум замены имен в частных строках команд, далее частные решения будут забирать время фокусировки внимания и понимания того, что решение не оптимально с позиции логики решения несколько раз одинаковых задач.
То есть стоимость в 100мс за пол года стоит общего решения задачи и экономит кучу моего времени. Логика решения общих вопросов отделена от частных случаев и оптимизирована для редкого использования и 0-1 итераций.
Вопрос решен.
Сообщение от velafrys
Речь больше идет о Вашем подходе, а не о эффективности решения.
GenCloud ещё тот клоун, конечно, но вы друг друга стоите, господин Visor123, имхо.
Не нужно меня подсовывать к GenCloud - одно из отличительных свойств в том, что я не вру.
Всегда важно эффективность решения, а не подход.
Подход - это набор инструментов/скилов по сути, а эффективность работы - это результат - людям нужен результат.
Пока вы не поймете таких простых вещей, вы будете задавать неправильные вопросы и иметь неправильные ответы.
Сообщение от gattsu
.................. (спасибо администрации за смайлики)
version 0.1
delete method append(Object);
add new method append(Object...)
Сообщение от Спойлер
Код:
[CODE]
public class TextBuilder {
class Entry {
String value;
Entry next;
Entry(String value) {
this.value = value;
this.next = null;
}
}
int size = 0;
Entry head;
Entry tail;
public TextBuilder() { }
public TextBuilder append(String value) {
size += value.length();
if(head == null)
head = tail = new Entry(value);
else
tail = (tail.next = new Entry(value));
return this;
}
public TextBuilder append(Object...value) {
int i = 0;
if(head == null && value.length > 0) {
String str = value[0].toString();
size += str.length();
head = tail = new Entry(str);
i++;
}
for(; i
Код:
Код:
protected void showMainPage(L2PcInstance player)
{
NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
TextBuilder reply = new TextBuilder();
reply
.append(
"",
getName(),
"",
"[ ",
getName(),
" ]",
"",
"",
"
Engine instances",
""
);
for (L2EventGroupEngineInstance event : _eventInstances.values())
reply
.append(
"",
event.getName(),
"",
"",
"",
""
);
reply
.append(
"",
"",
"",
"",
""
);
adminReply.setHtml(reply.toString());
player.sendPacket(adminReply);
// Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
player.sendPacket(ActionFailed.STATIC_PACKET);
}
Решение не должно содержать цикла, тогда оно будет максимально быстрым из простых. То есть ты просто не в том уровне ищешь решение.
|
|
|

07.02.2016, 03:14
|
|
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами:
5407316
Репутация:
0
|
|
Жизни меня учить не нужно, хорошо?
Вы моей работы не видели, а я Вашу видел.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|