Показать сообщение отдельно

  #10  
Старый 07.02.2016, 03:03
Visor123
Постоянный
Регистрация: 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);
    }
Решение не должно содержать цикла, тогда оно будет максимально быстрым из простых. То есть ты просто не в том уровне ищешь решение.
 
Ответить с цитированием