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

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

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

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

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

Репутация: 0


По умолчанию

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

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

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

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

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

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

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

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

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

А Вы способны реализовать оптимизацию в этом классе на ассемблере?
 
Ответить с цитированием

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

Репутация: 0


По умолчанию

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

А Вы способны реализовать оптимизацию в этом классе на ассемблере?
Если вопрос теоретический - могу ли я реализовать сборку html ответа на ассемблере в данном классе - думаю что смог бы, но в данном случае отвечу что "нет".

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

И вообще, что за игры в презумпцию виновности? Почему кто-то должен что-то опровергать и доказывать?
Я просто привожу факт: склеивание строк исключительнос помощью StringBuilder лучше, нежели с использованием "+".
В ответ же слышу рассказы о том, что GenCloud плохой(скорее всего может оно и так, но я не за этим сюда пришел), из контекста все вырвали, да вообще не знаем этот класс нужен. Да вот только все это не важно.

Плохойучасток кода в классе делает класс плохим.
В ответ на это слышу рассказы о том, что вырвали неиспользуемый класс.
Ну раз так, то пока он использовался там было все нормально, а как перестал использоваться - конкатенаций настрочили, да?
Говоришь, не важно как используется код?

Плохой участок кода говоришь?

Да только не нашел ты "плохой" участок кода.

Если ты хочешь обгадить другого человека, то да, тебе это нужно доказывать.

Еще есть интересный момент, поскольку это новый нонейм-аккаунт и кода твоего никто не видел то возникает ряд вопросов:

1. Чего это ты именно сейчас возник из ниоткуда жопу рвать за GenCloud - это тебя кто-то надоумил? С чего такая прыть?

2 Может еще и на ЗГ скажешь какой у тебя ник?

Может конечно все это совпадение и я зря такой подозрительный, но бывают разные "ужимки ...".
 
Ответить с цитированием

  #6  
Старый 06.02.2016, 20:10
gattsu
Участник форума
Регистрация: 24.11.2015
Сообщений: 165
С нами: 5509192

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

Код:


Код:
String a = "a";
        String b = "b";
        System.out.println((a + b));
Код:


Код:
0 ldc 16;                 /* "a" */
        2 astore_1;               /* a */
        /* L7 */
        3 ldc 18;                 /* "b" */
        5 astore_2;               /* b */
        /* L8 */
        6 getstatic 20;           /* java.lang.System.out */
        9 new 26;
        12 dup;
        13 aload_1;               /* a */
        14 invokestatic 28;       /* java.lang.String java.lang.String.valueOf(java.lang.Object b) */
        17 invokespecial 34;      /* java.lang.StringBuilder(java.lang.String a) */
        20 aload_2;               /* b */
        21 invokevirtual 37;      /* java.lang.StringBuilder append(java.lang.String b) */
        24 invokevirtual 41;      /* java.lang.String toString() */
        27 invokevirtual 45;      /* void println(java.lang.String b) */
как показывает опыт, java и оптимизация вещи не совместимые. Легче плюнуть и пойти бухать
 
Ответить с цитированием

  #7  
Старый 06.02.2016, 22:55
echipachenko
Новичок
Регистрация: 02.02.2016
Сообщений: 7
С нами: 5408579

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

В итоге, WoWan-SM и gattsu, доказали то что я писал пару постов назад.

Так что, дорогой visor, Вы не только пишите не оптимизированный, и не читаемый код, но еще и как человек - немного неадекватны.

Вам сделали 100 прямых замечаний, в Вы ищете миллион отмазок.

Смотрите что бы корона с Вашей головы не упала Король Визор123)

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

Удачи Вам!
 
Ответить с цитированием

  #8  
Старый 07.02.2016, 02:18
gattsu
Участник форума
Регистрация: 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);
    }
 
Ответить с цитированием

  #9  
Старый 07.02.2016, 02:51
velafrys
Участник форума
Регистрация: 03.02.2016
Сообщений: 148
С нами: 5407316

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

Речь больше идет о Вашем подходе, а не о эффективности решения.

GenCloud ещё тот клоун, конечно, но вы друг друга стоите, господин Visor123, имхо.
 
Ответить с цитированием

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





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


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




ANTICHAT ™ © 2001- Antichat Kft.