Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как "зачистить" StringBulider? зачистка StringBulider в начале цикла 
V
    Опции темы
BlHol
Дата 15.8.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



День добрый!

Объявляю 
Код

StringBuilder sb = new StringBuilder(" ") ;


Затем он у меня заполняется, потом идет цикл, в котором в начале каждого прохода он должен зачищаться.

Вопрос: как это сделать без объявления нового StringBuilder'а?
Скорее всего, плохо искал, но метода не нашел...

Заранее спасибо.
С уважением.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 15.8.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Код

sb.delete(0, sb.length()-1);


Добавлено через 9 минут и 3 секунды
Вот так лучше:
Код

sb.setLength(0);



--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
BlHol
Дата 15.8.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



Огромное спасибо!
PM MAIL   Вверх
polosatij
Дата 15.8.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8





а зачем ты используешь вообще этот класс? насколько я знаю, ява 6 или, НАВЕРНО, даже 5 (надо посмотреть в байткод) оптимирует данные проблемы со стрингом  smile 


--------------------
PM   Вверх
AlexeyVorotnikov
Дата 15.8.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Цитата(polosatij @  15.8.2007,  14:37 Найти цитируемый пост)
данные проблемы со стрингом

Какие проблемы?


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
Shaggie
Дата 15.8.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 4
Всего: 72



Цитата(polosatij @  15.8.2007,  14:37 Найти цитируемый пост)
а зачем ты используешь вообще этот класс? насколько я знаю, ява 6 или, НАВЕРНО, даже 5 (надо посмотреть в байткод) оптимирует данные проблемы со стрингом

Во-первых, не всегда есть возможность использовать 6 или даже 5. Это, конечно, никак не прогрессивно, но таковы реалии жизни.
Во-вторых, вот как раз вчера работал с регэкспом, точнее, с функцией appendReplacement(StringBuffer, String). Читать первым параметром String она не соглашалась ни в какую!

А пор теме. Почему бы не использовать переобъявление?
Код

sb = new StringBuilder("");

Это гораздо быстрее вызовов методов и код стопроцентно читабелен.

Добавлено через 1 минуту и 26 секунд
Правда, сиплюсплюсники меня на месте бы загрызли... но в условиях GC - чем не выход?

Добавлено через 2 минуты и 10 секунд
Сорри, стрингбилдер со стрингбуффером перепутал. Это с недосыпу, не иначе!


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
w1nd
Дата 15.8.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(polosatij @  15.8.2007,  13:37 Найти цитируемый пост)
а зачем ты используешь вообще этот класс? насколько я знаю, ява 6 или, НАВЕРНО, даже 5 (надо посмотреть в байткод) оптимирует данные проблемы со стрингом

Никто ничего не оптимизирует.
А использование сложения строк в циклах  - это вообще ужас в плане производительности и расхода памяти.

Цитата(Shaggie @  15.8.2007,  13:50 Найти цитируемый пост)
Это гораздо быстрее вызовов методов и код стопроцентно читабелен.

Кто вам сказал такую глупость? Во-первых, это стопроцентно медленнее вызова метода (особенно setLength). Во-вторых, нельзя заранее сказать насколько медленнее - в худшем случае вы запустите сборщик мусора. 

Это сообщение отредактировал(а) w1nd - 15.8.2007, 14:04


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Shaggie
Дата 15.8.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 4
Всего: 72



Каюсь... пошёл отсыпаться.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
polosatij
Дата 15.8.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



Цитата(w1nd @  15.8.2007,  13:57 Найти цитируемый пост)
Никто ничего не оптимизирует.



да? тогда посмотри в байт код следующей строки:

Код

String foo = "hi";
String bar = "hi2"; // динамическое присвоение переменной!

....

String foobar = foo + bar;


 smile 


--------------------
PM   Вверх
polosatij
Дата 15.8.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



Цитата(w1nd @  15.8.2007,  13:57 Найти цитируемый пост)
А использование сложения строк в циклах  - это вообще ужас в плане производительности и расхода памяти.


у тебя пробел в образовании..  smile  это было так раньше smile , сейчас уже всё по другому.. посмотри байткод явы 6 (и думаю такое же будет в ява 5) smile



--------------------
PM   Вверх
niasilil
Дата 16.8.2007, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



Цитата(polosatij @ 15.8.2007,  20:26)
Цитата(w1nd @  15.8.2007,  13:57 Найти цитируемый пост)
А использование сложения строк в циклах  - это вообще ужас в плане производительности и расхода памяти.
у тебя пробел в образовании..  smile  это было так раньше smile , сейчас уже всё по другому.. посмотри байткод явы 6 (и думаю такое же будет в ява 5) smile

погоди, погоди, как так? Чего, String pool по другому стал работать что ли? Я почему то всегда считал что если один раз создал String объект, его уже не убьешь. 
Можно подробности или ссылочку?


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
mindflyer
Дата 16.8.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.10.2004
Где: Smolensk, Russia

Репутация: 1
Всего: 4



Цитата(polosatij @  15.8.2007,  20:26 Найти цитируемый пост)
это было так раньше smile , сейчас уже всё по другому.. посмотри байткод явы 6 (и думаю такое же будет в ява 5)


В 6-ой не знаю, но 5-ая точно без оптимизаций. Недавно под профайлером смотрел работу нашей системы, пришёл в тихий ужас над участком программы, в котором строилась строка из 10 подстрок. Просто дикие потери памяти и быстродействия, которые вылечились использованием StringBuilder.
PM MAIL ICQ   Вверх
polosatij
Дата 16.8.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8





Цитата(niasilil @  16.8.2007,  07:23 Найти цитируемый пост)
Можно подробности или ссылочку? 


просто посмотри байткод  smile 

Цитата(niasilil @  16.8.2007,  07:23 Найти цитируемый пост)
Я почему то всегда считал что если один раз создал String объект, его уже не убьешь. 


не в этом дело.. там компилярор по ходу все String1 + String2 заменяет на StringBuffer sb = new StringBuffer(); и потом append.. ыыы  smile 

Цитата(mindflyer @  16.8.2007,  09:05 Найти цитируемый пост)
Просто дикие потери памяти и быстродействия, которые вылечились использованием StringBuilder. 


ага.. я тоже так делал, но когда в последний раз посмотрел бакткод, то был удивлён и больше этого не делаю, т.к. работаю на ява 6  smile 


--------------------
PM   Вверх
nornad
Дата 16.8.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(polosatij @  16.8.2007,  16:28 Найти цитируемый пост)
ага.. я тоже так делал, но когда в последний раз посмотрел бакткод, то был удивлён и больше этого не делаю, т.к. работаю на ява 

Напрасно. Никто ведь не гарантирует, что в java 7 эта оптимизация останется. Лучше пока что делать явно со стрингбилдером. А вот когда они его официально прибьют за ненадобностью - тогда и складывать строки. smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
niasilil
Дата 16.8.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



Цитата(polosatij @ 16.8.2007,  13:28)
там компилярор по ходу все String1 + String2 заменяет на StringBuffer sb = new StringBuffer(); и потом append.. ыыы  smile 

Очень интересно, спасибо. Дал бы плюса, да рейтинг маловат пока. Если только модераторы поставят за меня. 


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
mindflyer
Дата 16.8.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.10.2004
Где: Smolensk, Russia

Репутация: 1
Всего: 4



Цитата(polosatij @  16.8.2007,  13:28 Найти цитируемый пост)
ага.. я тоже так делал, но когда в последний раз посмотрел бакткод, то был удивлён и больше этого не делаю, т.к. работаю на ява 6  smile  

Хм, но ведь компилятор не всё сможет оптимизировать, например, когда построение итоговой строки зависит от результатов работы функций. Типа:
Код

String result = "start";
if ( getBlaBlaBla() == 4 ) {
   result += "1";
   send(result);
} else {
   result += "2";
   write(result);
}


Или он и такие вещи умеет оптимизировать? Как-то не доверяю я возможностям оптимизации в сложных конструкциях smile Лучше уж в таких ситуациях по старинке, со StringBuilder'ом.
PM MAIL ICQ   Вверх
sergejzr
Дата 16.8.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



А что там сложного оптимизировать?
Код

StringBuffer result = new StringBuffer(); 
result.append("start");
if ( getBlaBlaBla() == 4 ) {
   result.append("1");
   send(result.toString());
} else {
    result.append("2");
   write(result.toString());
}

Цитата(nornad @  16.8.2007,  15:03 Найти цитируемый пост)
Напрасно. Никто ведь не гарантирует, что в java 7 эта оптимизация останется.

Она скорее даже ещё улучшится.

В любом случае "грязную рутинную работу" надо оставлять роботам - т.е компилятору. Лучше оптимизатора человек всё равно не соптимирует. 
А вот читабельность должна на первом месте стоять. 

Но конечно setLength(0); - самы быстрый вариант. И такое точно оптимизатор не возьмёт.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
COVD
Дата 16.8.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Где-то в учебнике видел фразу, что StringBuilder - это несинхронизированная версия StringBuffer' а . Примерно также соотносятся, как Vector и ArrayList. Просто и понятно. А прочитав эту дискуссию, так ничего и не понял. Как же лучше складывать строки в java 6? (в байт код не отсылайте smile )
PM MAIL   Вверх
sergejzr
Дата 16.8.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



COVD, плюсом.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
w1nd
Дата 16.8.2007, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(sergejzr @  16.8.2007,  23:20 Найти цитируемый пост)
COVD, плюсом.

Только не в циклах.

Цитата(polosatij @ 15.8.2007,  20:26)
у тебя пробел в образовании..  smile  это было так раньше smile , сейчас уже всё по другому.. посмотри байткод явы 6 (и думаю такое же будет в ява 5) smile

Я бы с радостью восполнил пробел в образовании, если бы он был smile

Упомянутая вами "оптимизация" имела место ещё в версии 1.4.0 (возможно и в более ранних, я не интересовался). И заключается она _только_ в подмене операций со строками на операции со StringBuffer'ом (до 1.5) или StringBuilder'ом. Это я за оптимизацию не считаю вовсе.

Конкатенация строк вида 
Код
String s2 = s1 + "2";

преобразуется компилятором в код, создающий два-три (зависит от ситуации) _лишних_ объекта. При этом расходуется _как минимум_ в полтора раза больше памяти, чем при использовании StringBuilder'а. Именно эта "оптимизация", помещённая в цикл, и приводит к огромным потерям времени и значительным потерям памяти _впустую_.

З. Ы. Особенно времени. Дополнение StringBuilder'а (каждый может написать для себя простенький тест, дабы убедиться воочию) быстрее конкатенации строк (якобы оптимизируемой) в _тысячи раз_.

Это сообщение отредактировал(а) w1nd - 16.8.2007, 23:41


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
COVD
Дата 16.8.2007, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Только не в циклах.


Тогда везде бы надо StringBuilder использовать. Надо ли понимать так, что str1+str2 - это наглядно и потому хорошо, но в цикле это большая роскошь. 
PM MAIL   Вверх
w1nd
Дата 16.8.2007, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(COVD @  16.8.2007,  23:36 Найти цитируемый пост)
Надо ли понимать так, что str1+str2 - это наглядно и потому хорошо, но в цикле это большая роскошь. 

 smile 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
mindflyer
Дата 16.8.2007, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.10.2004
Где: Smolensk, Russia

Репутация: 1
Всего: 4



Цитата(sergejzr @  16.8.2007,  23:02 Найти цитируемый пост)
В любом случае "грязную рутинную работу" надо оставлять роботам - т.е компилятору. Лучше оптимизатора человек всё равно не соптимирует. 
А вот читабельность должна на первом месте стоять. 

Согласен (иногда бывает наоборот, но речь не об этом). Современный java-компилятор (6-ой, 5-ый...) действительно умеет делать такие оптимизации, как ты привёл в коде?
PM MAIL ICQ   Вверх
w1nd
Дата 17.8.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(mindflyer @  16.8.2007,  23:59 Найти цитируемый пост)
Согласен (иногда бывает наоборот, но речь не об этом). Современный java-компилятор (6-ой, 5-ый...) действительно умеет делать такие оптимизации, как ты привёл в коде?

Такие не умеет. И, смею предположить, не сумеет никогда. Просто на месте каждого сложения будет создан StringBuilder, вызван append, и результат обратно в переменную с помощью toString().

Это сообщение отредактировал(а) w1nd - 17.8.2007, 11:50


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Shaggie
Дата 17.8.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 4
Всего: 72



На свежую голову провёл эксперимент.
Код

String a = "hi";
String b = "all";
String c = a+b; // компилируется в String c = new StringBuilder().append(a).append(b).toString();

В то время как
Код

String a = "hi";
String b = "all";
String c = new StringBuilder(a).append(b).toString();

экономит три байта и лишний вызов метода append()

Вот такая мелочная оптимизация.

Особенно забавно, что мы не знаем, как реализованы вызовы конструкторов StringBuilder - какой из них эффективнее  smile 


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
nornad
Дата 17.8.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(sergejzr @  17.8.2007,  02:02 Найти цитируемый пост)
Лучше оптимизатора человек всё равно не соптимирует.

Да ну? Совершенно не согласен. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
sergejzr
Дата 17.8.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(nornad @  17.8.2007,  12:10 Найти цитируемый пост)
Да ну? Совершенно не согласен. smile 

Вместо "лучше" следовало бы написать "эффективнее". Это true.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
nornad
Дата 17.8.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



sergejzr, всё равно не согласен. Человек способен оптимизировать куда лучше и эффективнее, чем любой компилятор, оптимизатор и иже с ними. А вот то, что человек затратит на это куда больше времени - это уже как раз true.
То есть, оптимизация выходит у человека эффективнее, но сам процесс оптимизирования у него неэффективен. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
sergejzr
Дата 18.8.2007, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(nornad @  17.8.2007,  15:28 Найти цитируемый пост)
sergejzr, всё равно не согласен. Человек способен оптимизировать куда лучше и эффективнее, чем любой компилятор, оптимизатор и иже с ними.

 А что есть по Вашему эффективность?  Уж время это один из главных влияющих факторов. И кто этот абстрактный "человек"? Если среднего программиста взять, то точно оптимизатор лучше, а если крутого, то его сперва надо взять где-то, да и он наврядли будет оптимизировать ваш код. А зачем нам учитывать теоретическую эффективность, которая не может быть достигнута на практике?
ПС:
Не стоит придираться к словам. И так понятно, что имеется ввиду, а то - уходим от темы.




Цитата(w1nd @  17.8.2007,  10:49 Найти цитируемый пост)
Такие не умеет. И, смею предположить, не сумеет никогда.

Да, действительно (проверил дисассемблером). Ява оптимизатор оказывается и правда ещё в младенческом возрасте находится. 

Насчёт не сумеет никогда - я бы сомневался. Конструкция не очень тяжёлая. Её возможно даже препроцессором (заменой выражений "побуквенно") можно взять (если бы он у явы был smile) )


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
nornad
Дата 18.8.2007, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Под эффективностью я понимал то, что человек может оптимизировать код так, что он (код) после этой процедуры будет эффективнее. Эффективность кода и эффективность процесса оптимизации кода - разные вещи. Думаю, теперь мы разобрались с тем, кто и что имел в виду.

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


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
lando1
Дата 18.8.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



[QUOTE=nornad,16.8.2007,  16:03]
Цитата(polosatij @  16.8.2007,  16:28 Найти цитируемый пост)
...Никто ведь не гарантирует, что в java 7 эта оптимизация останется. Лучше пока что делать явно со стрингбилдером. А вот когда они его официально прибьют за ненадобностью - тогда и складывать строки. smile


Почему-это StringBuilder прибьют? Если использовать однопоточные приложения - то он предпочтительней StringBuffer по скорости - ибо несинхронизирован.
PM MAIL ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1383 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.