Модераторы: 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   Вверх
Страницы: (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.0903 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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