![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
BlHol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
День добрый!
Объявляю
Затем он у меня заполняется, потом идет цикл, в котором в начале каждого прохода он должен зачищаться. Вопрос: как это сделать без объявления нового StringBuilder'а? Скорее всего, плохо искал, но метода не нашел... Заранее спасибо. С уважением. |
|||
|
||||
AlexeyVorotnikov |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Добавлено через 9 минут и 3 секунды Вот так лучше:
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
||||
|
|||||
BlHol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Огромное спасибо!
|
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
а зачем ты используешь вообще этот класс? насколько я знаю, ява 6 или, НАВЕРНО, даже 5 (надо посмотреть в байткод) оптимирует данные проблемы со стрингом ![]() |
|||
|
||||
AlexeyVorotnikov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
Shaggie |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
Во-первых, не всегда есть возможность использовать 6 или даже 5. Это, конечно, никак не прогрессивно, но таковы реалии жизни. Во-вторых, вот как раз вчера работал с регэкспом, точнее, с функцией appendReplacement(StringBuffer, String). Читать первым параметром String она не соглашалась ни в какую! А пор теме. Почему бы не использовать переобъявление?
Это гораздо быстрее вызовов методов и код стопроцентно читабелен. Добавлено через 1 минуту и 26 секунд Правда, сиплюсплюсники меня на месте бы загрызли... но в условиях GC - чем не выход? Добавлено через 2 минуты и 10 секунд Сорри, стрингбилдер со стрингбуффером перепутал. Это с недосыпу, не иначе! |
||||
|
|||||
w1nd |
|
||||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Никто ничего не оптимизирует. А использование сложения строк в циклах - это вообще ужас в плане производительности и расхода памяти.
Кто вам сказал такую глупость? Во-первых, это стопроцентно медленнее вызова метода (особенно setLength). Во-вторых, нельзя заранее сказать насколько медленнее - в худшем случае вы запустите сборщик мусора. Это сообщение отредактировал(а) w1nd - 15.8.2007, 14:04 -------------------- ![]() ![]() |
||||
|
|||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
Каюсь... пошёл отсыпаться.
|
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
да? тогда посмотри в байт код следующей строки:
![]() |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
||||
|
||||
niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
погоди, погоди, как так? Чего, String pool по другому стал работать что ли? Я почему то всегда считал что если один раз создал String объект, его уже не убьешь. Можно подробности или ссылочку? -------------------- SCJP 5.0, SCJD |
|||
|
||||
mindflyer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 20.10.2004 Где: Smolensk, Russia Репутация: 1 Всего: 4 |
В 6-ой не знаю, но 5-ая точно без оптимизаций. Недавно под профайлером смотрел работу нашей системы, пришёл в тихий ужас над участком программы, в котором строилась строка из 10 подстрок. Просто дикие потери памяти и быстродействия, которые вылечились использованием StringBuilder. |
|||
|
||||
polosatij |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
просто посмотри байткод ![]()
не в этом дело.. там компилярор по ходу все String1 + String2 заменяет на StringBuffer sb = new StringBuffer(); и потом append.. ыыы ![]()
ага.. я тоже так делал, но когда в последний раз посмотрел бакткод, то был удивлён и больше этого не делаю, т.к. работаю на ява 6 ![]() |
||||
|
|||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Напрасно. Никто ведь не гарантирует, что в java 7 эта оптимизация останется. Лучше пока что делать явно со стрингбилдером. А вот когда они его официально прибьют за ненадобностью - тогда и складывать строки. ![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
Очень интересно, спасибо. Дал бы плюса, да рейтинг маловат пока. Если только модераторы поставят за меня. -------------------- SCJP 5.0, SCJD |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |