powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ускорение StringBuilder
66 сообщений из 66, показаны все 3 страниц
Ускорение StringBuilder
    #38942114
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть
StringBuilder sf = new StringBuilder(250000);
в цикле он заполняется примерно так
sf.append("лялялялялялялял).append(String)
.append(int)
.append("d gdfgs fhs fghjsfgj fgjg hsdfh swfhwgfjhfjdfgjd ghjdgh")
и т.д.
длина sf может быть различна
максимальная длина заполняется 50мс
можно как-либо ускорить?
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942123
YamahaR1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Никак, AFAIK chain append наиболее эффективный в данном случае.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942124
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Можно поэкспериментировать с char[]. Но выгода будет далеко не всегда.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942163
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если тут
.append("d gdfgs fhs fghjsfgj fgjg hsdfh swfhwgfjhfjdfgjd ghjdgh")

"d gdfgs fhs fghjsfgj fgjg hsdfh swfhwgfjhfjdfgjd ghjdgh" заменить на константу finaly , будет какой-то смысл?
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942168
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесли тут
.append("d gdfgs fhs fghjsfgj fgjg hsdfh swfhwgfjhfjdfgjd ghjdgh")

"d gdfgs fhs fghjsfgj fgjg hsdfh swfhwgfjhfjdfgjd ghjdgh" заменить на константу finaly , будет какой-то смысл?
Нет. Вообще ИМХО, вы не с того боку к решению проблемы подошли. Опишите картину шире. Почему именно это место вызывает проблему? Какая задача решается? Заполнение шаблона или что-то ещё? Почему её нужно оптимизировать, а не, например, распараллелить?
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942279
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесть
StringBuilder sf = new StringBuilder(250000);
в цикле он заполняется примерно так
sf.append("лялялялялялялял).append(String)
.append(int)
.append("d gdfgs fhs fghjsfgj fgjg hsdfh swfhwgfjhfjdfgjd ghjdgh")
и т.д.
длина sf может быть различна
максимальная длина заполняется 50мс
можно как-либо ускорить?
StringBuilder практически невозможно ускорить. Он достаточно хорош для 99% случаев.
Но можно посмотреть алгоритм которые его обрамляет и поставить вопрос с другого ракурса.
Для чего нужно с огромной скоростью фабриковать строки? Что дальше с ними делать?
Где тот process-consumer который сможет их так-же быстро заглатывать?
Сможет-ли вообще?
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942475
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНет. Вообще ИМХО, вы не с того боку к решению проблемы подошли. Опишите картину шире.
из базы приходит N записей в ResultSet
из них нужно сформировать строку содержащую html код таблицы с заполненной данными из ResultSet
когда данных мало - летает.
но есть наборы дофига строк....
это, конечно не правильно, и я против того чтоб на клиента гнать стока записей, но это тот случай, когда это как-бы ну....
можно и на клиенте сфомировать саму таблицу, но сервер быстрее...
тут конечно и на передачу по сети (правда локальной) время идет...
вот така проблемка
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942510
vsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsl
Гость
вадя, и вы уверены, что дело именно в StringBuilder? Крайне сомнительно.
Как замеряли? Менять statement.setFetchSize(int rows) пробовали?
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942530
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя....
из базы приходит N записей в ResultSet

Сомневаюсь, что в данном случае будет тормозить StringBuilder.

Сейчас посмотрел на исходники на grepcode.com , выделение памяти достаточно не эффективно. Всегда ровно под размер добавляемой строки увеличивает. Можно, в принципе:

1. Сделать свою процедуру (типа fastAppend) и оптимизировать выделение памяти (заранее перед вызовом append добавлять память большими кусками через ensureCapacity).
2. Периодически, например перед обработкой каждой строки докидывать в StringBuilder достаточно большой объем памяти.

В общем, если grepcode.com не врет, вырвать руки и ноги тем, кто StringBuilder писал. И переставить местами. Что у них руки сразу торчали из того места, откуда следует (т.е. из пятой точки).

To All: а почему авторы JRE любят классы делать final? Нафига?
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942535
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p.s. Первую строчку в пред. сообщение удалить. Вроде, судя по исходникам, StringBuilder сделан через одно место ((( Действительно ДОЛЖЕН тормозить и не по детски. Тесты не писал и не проверял, пускай этим автор топика заморачивается.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942552
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
авториз базы приходит N записей в ResultSet
....
когда данных мало - летает.
но есть наборы дофига строк....
...
вот така проблемка

Вадя, на твой вопрос есть два варианте ответа - плохой и матерный.
Дам плохой ответ.
Оставь в покое, по возможности навсегда , StringBuilder.

Уточнение - ни в коем случае не оставляй в покое и обязательно усовершенствуй StringBuilder (например, по советам Leonid Kudryavtsev ), если другого занятия ты для себя придумать не можешь.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942554
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vslвадя, и вы уверены, что дело именно в StringBuilder? Крайне сомнительно.
Как замеряли? Менять statement.setFetchSize(int rows) пробовали?
измеряю так
long start = System.nanoTime();
............................
System.out.println("time " + (System.nanoTime() - start));

StringBuilder один из моментов,
statement.setFetchSize(int rows) пока не пробывал, не дошёл.
оптимизирую по кускам.
автор1. Сделать свою процедуру (типа fastAppend) и оптимизировать выделение памяти (заранее перед вызовом append добавлять память большими кусками через ensureCapacity).
у меня вроде для выделения памяти есть заранее
StringBuilder sf = new StringBuilder(250000);
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942560
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Сейчас посмотрел на исходники на grepcode.com , выделение памяти достаточно не эффективно. Всегда ровно под размер добавляемой строки увеличивает.

Это если каждый раз добавлять строку, которая длиннее sb в 2 раза+2. int newCapacity = (value.length + 1) * 2;
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942566
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

автороптимизирую по кускам.
ты не по тем кускам оптимизируешь.
у тебя нет права ждать результата от оптимизации куска, выбранного путем тыканья пальца в позапрошлогодний снег.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942567
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторНет. Вообще ИМХО, вы не с того боку к решению проблемы подошли. Опишите картину шире.
из базы приходит N записей в ResultSet
из них нужно сформировать строку содержащую html код таблицы с заполненной данными из ResultSet


Вопрос ребром: зачем формировать ответ целиком в памяти, почему не отдавать на клиент частями?

Типа такого:
Код: java
1.
2.
3.
4.
5.
resultSet = ...
...
writer.write("<tr><td>...");
writer.write(resultSet.getString(1);
writer.write("</td></tr>...");
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942589
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторНет. Вообще ИМХО, вы не с того боку к решению проблемы подошли. Опишите картину шире.
из базы приходит N записей в ResultSet
из них нужно сформировать строку содержащую html код таблицы с заполненной данными из ResultSet
когда данных мало - летает.
но есть наборы дофига строк....
это, конечно не правильно, и я против того чтоб на клиента гнать стока записей, но это тот случай, когда это как-бы ну....
можно и на клиенте сфомировать саму таблицу, но сервер быстрее...
тут конечно и на передачу по сети (правда локальной) время идет...
вот така проблемка
Да, тут простор для оптимизиации нереальный.

1. Нафига тут String/StringBuilder вообще? Гнать потоком все данные через Writer или даже OutputStream прямо в отклик.
2. Можно, конечно, завести огромный массив, забитый пробелами, с готовым шаблоном. А значения пихать только по индексу. Но это оверхед и ничем не лучше предыдущего варианта.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942602
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
авторДа, тут простор для оптимизиации нереальный.

Нет. Простор для оптимизации всегда реальный.

Да, оптимизация может закончиться заменой алгоритма.
Но обычно она начинается с профилировки существующего кода и оценки суммарных долей времени.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942628
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyавторДа, тут простор для оптимизиации нереальный.
Нет. Простор для оптимизации всегда реальный.

Русский язык стоит подтянуть. "Нереальный" в данном случае "невероятно огромный", "необъятный".

boobyДа, оптимизация может закончиться заменой алгоритма.

Небо синее, вода мокрая.

boobyНо обычно она начинается с профилировки существующего кода и оценки суммарных долей времени.
Профилировка обычно заканчивается тем что суммарные доли времени равномерно размазаны по всему коду.
Вы ещё вот этим ребятам расскажите. С 4й минуты про профилировку.
YouTube Video
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942639
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторНет. Вообще ИМХО, вы не с того боку к решению проблемы подошли. Опишите картину шире.
из базы приходит N записей в ResultSet
из них нужно сформировать строку содержащую html код таблицы с заполненной данными из ResultSet
когда данных мало - летает.
но есть наборы дофига строк....
это, конечно не правильно, и я против того чтоб на клиента гнать стока записей, но это тот случай, когда это как-бы ну....
можно и на клиенте сфомировать саму таблицу, но сервер быстрее...
тут конечно и на передачу по сети (правда локальной) время идет...
вот така проблемка
Вадя. В твоём коде блокером (скорее всего) будет ожидание записи в сокет в тот момент когда ты
наколдовал свою гигабайтную html-ку и отдаёшь ее клиенту. И здесь попытка оптимизировать StringBuilder
выглядит наивной и эпичной. Работай напрямую с *Response.write(..) и получишь нужную золотую середину
между асинхронностью и скоростью разработки.

StringBuilder - это просто удобный фасад к char[] и больше там ничего наковырять нельзя.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942642
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВопрос ребром: зачем формировать ответ целиком в памяти, почему не отдавать на клиент частями?
автор1. Нафига тут String/StringBuilder вообще? Гнать потоком все данные через Writer или даже OutputStream прямо в отклик.
этот вариант тоже рассматривается, но под него на клиенте надо переделывать..
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942645
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

авторРусский язык стоит подтянуть
Подтягивайте, желательно с усердием.

"невероятно огромный", "необъятный" в русском языке не синонимы для "все равно, с чего начать оптимизацию"

авторПрофилировка обычно заканчивается тем что суммарные доли времени равномерно размазаны по всему коду.
10/10 - у Вади это не так , при правильном сложении циферок.

Он же именно русским языком, а не каким-нибудь другим сообщил:
авториз базы приходит N записей в ResultSet
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942646
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяэтот вариант тоже рассматривается, но под него на клиенте надо переделывать..
Клиент-то тут при чем? Ему всё равно как именно сервер отдаёт текст.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942649
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby"невероятно огромный", "необъятный" в русском языке не синонимы для "все равно, с чего начать оптимизацию"

Спасибо, КЭП.

[/quot]
авторПрофилировка обычно заканчивается тем что суммарные доли времени равномерно размазаны по всему коду.
10/10 - у Вади это не так , при правильном сложении циферок.

Он же именно русским языком, а не каким-нибудь другим сообщил:
авториз базы приходит N записей в ResultSet[/quot]
[/quot]
Очевидно что ни одного сервера работающего с БД вы не профилировали. Удачи.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942653
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FD...Это если каждый раз добавлять строку, которая длиннее sb в 2 раза+2. int newCapacity = (value.length + 1) * 2;
Опппс.... Беру свои слова обратно. Слона и не заметил. Ну тогда у них все хорошо.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942658
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczвадяэтот вариант тоже рассматривается, но под него на клиенте надо переделывать..
Клиент-то тут при чем? Ему всё равно как именно сервер отдаёт текст.
ну если по частям - то надо как-то эти части обрабатывать.

меня в данном случае интересует оптимизация StringBuilder потому, что может я чего по нему не знаю.
а так - надо в комплексе смотреть - на весь путь .
эта часть по java поэтому тут и интересуюсь
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942664
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяменя в данном случае интересует оптимизация StringBuilder
не понятно, с чего Вы взяли, что тормозит именно StringBuilder
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942666
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяBlazkowiczпропущено...
Клиент-то тут при чем? Ему всё равно как именно сервер отдаёт текст.
ну если по частям - то надо как-то эти части обрабатывать.

Ну, по каким ещё частям, если клиент с сервера всегда читает поток данных. Какие тут части могут быть? Разве что Content-Length не известен.

вадяменя в данном случае интересует оптимизация StringBuilder потому, что может я чего по нему не знаю.

Нечего там оптимизировать.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942671
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНечего там оптимизировать.
ответ устраивает!!!
меньше неизвестных - ближе решение
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942692
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

BlazkowiczОчевидно что ни одного сервера работающего с БД вы не профилировали. Удачи.

Таки да. Ни одного java-based сервера, по счастью , я не профилировал,
и сохраняю некоторую, с каждым днем слабеющую, надежду, что никогда не придется .

Это как раз именно и специально вам удачи .
При вашем заходах на необъятности только удача и счастливый случай могут помочь.

Впрочем, ведь все это не имеет значения.

Повозившись со StringBuilder-ом в собственное удовольствие, вполне можно с абсолютно легкой душой объявить любой код абсолютно и окончательно оптимизированным в произвольно взятый момент времени. Так ведь?

Или, наоборот, уверенно заявить о необъятном поле для оптимизации и еще повозиться со
стрингбилдером, в свое удовольствие, произвольно взятое на это дело время.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942699
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyТаки да. Ни одного java-based сервера, по счастью , я не профилировал,

...но мнение имею.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942703
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяиз базы приходит N записей в ResultSet
из них нужно сформировать строку содержащую html код таблицы с заполненной данными из ResultSet
когда данных мало - летает.
но есть наборы дофига строк....
это, конечно не правильно, и я против того чтоб на клиента гнать стока записей, но это тот случай, когда это как-бы ну....
можно и на клиенте сфомировать саму таблицу, но сервер быстрее...
тут конечно и на передачу по сети (правда локальной) время идет...
вот така проблемка
С таким подходом GC сляжет первым, ведь для каждого клиента резервируется куча памяти под String.
Все же потоковая передача данных здесь будет единственным верным решением.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942718
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczboobyТаки да. Ни одного java-based сервера, по счастью , я не профилировал,

...но мнение имею.
Да. Ваше право игнорировать мое мнение не может отменить сам факт его существования.

И попутно, в том, ява может быть важнее здравого смысла (для некоторых так и есть) - я не сомневаюсь.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942724
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВсе же потоковая передача данных здесь будет единственным верным решением.

вот она ява, сама прет.

единственным решением какой задачи?
А пофигу какой. Здесь - любой, вот как раз той самой, какая у Вади.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942725
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyИ попутно, в том, ява может быть важнее здравого смысла (для некоторых так и есть) - я не сомневаюсь.
Ну, да. Java сама виновата в том что booby её не осилил.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942731
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby вот она ява, сама прет.

Ай, да Моська...

boobyединственным решением какой задачи?

"Проблемы", а не "задачи". Задачи решают в школе. Не отвык ещё, что решать можно не только задачи?

boobyА пофигу какой. Здесь - любой, вот как раз той самой, какая у Вади.
Не читай. Сразу пиши.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942748
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторС таким подходом GC сляжет первым, ведь для каждого клиента резервируется куча памяти под String.
Все же потоковая передача данных здесь будет единственным верным решением.
для данной задачи пользователей с такими запросами - 1-2 единовременно, и памятью нет проблем- можно добавить :)
но и административное решение существует - запретить такие таблицы ( что более правильнее)
потоковая - рассматривается, вполне нормальный подход.
по данному :
Нечего там оптимизировать. :)
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942759
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя...
Нечего там оптимизировать. :)

Вадя, ну нельзя же так дословно.
Я же буквально несколькими постами выше написал примерно следующее:
boobyПовозившись со StringBuilder-ом в собственное удовольствие, вполне можно с абсолютно легкой душой объявить любой код абсолютно и окончательно оптимизированным в произвольно взятый момент времени. Так ведь?

вадя, я очень сильно надеюсь, что java здесь все-таки ни при чем.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942760
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczboobyНеуважаемый господин мудезвон.
Ваше неумение держать себя в руках не свидетельствует о том, что Вы не знаете java или деталей ее устройства.
А вот ваше и желание и готовность с разбегу выдавать необъятных советов, вроде:
, явно и однозначно свидетельствует о том, что у Вас отсутствует сформированное представление о том, что такое программирование вообще. Безотносительно к java.
С чего оно начинается и чем заканчивается.

Правильно. Не говори умных вещей. Называй других дураками. За это тебя и оценят как настоящего эксперта. Про Моську, походу не ошибся.

Не напрягайся - я вижу, что ты не ошибся.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942767
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про принцип суперпозиции нам ещё в школе твердили.
разделить на составляющие и найти суммарное воздействие (как-то так)
вот одну из составляющих я и обсудил.
есть ещё куча..
но это совсем другая история....
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942791
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyBlazkowiczпропущено...


Правильно. Не говори умных вещей. Называй других дураками. За это тебя и оценят как настоящего эксперта. Про Моську, походу не ошибся.

Не напрягайся - я вижу, что ты не ошибся.

Товарищ, полученный вами пинок под заднее место, был абсолютно заслужен. Вместо того, чтобы разобраться в причине неудачи, вы усиленно продолжаете наскакивать тем же местом на тот же сапог, это не добавляет вам вистов. Несмотря на некоторую эксцентричность Blazkowicz, КПД его действий на форуме весьма высоко, так что если вам есть что сказать,то говорите по делу, а не вертите дымоходом. П,С. ничего личного - сам не раз получал пинки, которые помогали разораться в проблеме.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942794
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
ну и ладно.
(а я-то думал, тебя на самом деле производительность твоего кода интересует).
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942795
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, парсинг мега-таблицы на клиенте тоже приличное время занимает, особенно если это эксплорер (по крайней мере, старые версии). Вполне вероятно, для данной задачи самым быстрым окажется excel через apache poi
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942830
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyвадя,
ну и ладно.
(а я-то думал, тебя на самом деле производительность твоего кода интересует).
в общем-то мне и ответили, и варианты предложили.
Leonid Kudryavtsev не понятно, с чего Вы взяли, что тормозит именно StringBuilder
при таком объёме тормозит всё, но не спрашивать же здесть про оптимизацию базы?
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942851
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя, все плохо, оказывается.

вадя...
в общем-то мне и ответили, и варианты предложили.

т.е. твой код уже ускорился в степени, которая тебя устраивает - весьма и очень хорошо.
или
твой код не ускорился еще , но ты, послушав "предложения", профессионально веришь (то есть знаешь ), что точно ускорится в нужной тебе степени сразу после того, как ты наплодишь реализаций изложенных советов - не весьма хорошо, но вполне очень.

Ну, а у меня-то, по незнанию явы, сформировалась уверенность в том, что вы тут "просто пообщались".
Для дела оптимизации кода это - никак, а для души - вполне хорошо.


вадяLeonid Kudryavtsev не понятно, с чего Вы взяли, что тормозит именно StringBuilder
при таком объёме тормозит всё, но не спрашивать же здесть про оптимизацию базы?

Вадя, так нельзя .
Оказывается, у тебя даже нет ясного представления, о чем надо спрашивать, а о чем не надо.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942865
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нет отягчающих обстоятельств в виде клиента, требующего Content-Length и не умеющего работать с Content-Range, то "построчное" чтение исходных данных и построчная же отправка "оформленного" результата клиенту - единственный адекватный вариант.
И это не зависит от языка программирования, веб-серверов и клиентов.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942881
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YamahaR1,
вы ошибаетесь.
я не на "форуме вообще", а в конкретном топике.

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

Ваше считание глупым каких-то конкретных обстоятельств я принял к сведению.
Кроме того, вы ошиблись - я нигде не сказал, что ява мне не нравится.
Про яву головного мозга - говорил, про не нравится - нет.
Но говорил про то, что слава богу , не имею к ней (java) отношения.


PS
Люди, которые в отличие от меня про яву знают, рассказали мне такую историю:
На днях (в прошлый понедельник) любителями явы был устроен семинар, начавшийся с длинной лекции о пришивании левого уха к правому локтю, с указанием на техники заставить отрезанное ухо слышать после этого.
На вопрос одного из слушателей - "При чем здесь ява?"
Был дан ответ такого смысла, что программирование - дело креативное, и, мол, без креатива пороха не придумаешь.
Так вот докладываю, что время для начала применения креатива в программировании
наступает после оценки ситуации, в отличии от искусства, которое с креатива стартует для формирования мизансцены.
Вы можете продолжать считать умным выдачу советов сорта "срочно преобразуй все в поток",
но оставьте себе возможность хотя бы ошибиться в своей предварительной оценке ситуации.
Со стороны это и глядеться умнее будет и на программирование станет немного больше похоже.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942886
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВадя, так нельзя.
Оказывается, у тебя даже нет ясного представления, о чем надо спрашивать, а о чем не надо.
Я взял тормозной кусок проекта, выявил тормозные звенья , оценил стоимость оптмизации каждого звена, стоимость оптимизации совместных звеньев, стоимость переделки логики..
отсортировал в порядке возростания и оптимизация StringBuilder стоит в первых рядах с самой малой стоимостью.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942888
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глубокая философия на мелких местах - это да, это пять. "Это мы дадим в конце".
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942904
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторВадя, так нельзя.
Оказывается, у тебя даже нет ясного представления, о чем надо спрашивать, а о чем не надо.
Я взял тормозной кусок проекта, выявил тормозные звенья , оценил стоимость оптмизации каждого звена, стоимость оптимизации совместных звеньев, стоимость переделки логики..
отсортировал в порядке возростания и оптимизация StringBuilder стоит в первых рядах с самой малой стоимостью.

Значит, другого пути у тебя нет.
Придется оптимизировать StringBuilder.

Пока.
Удачно пообщаться.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942908
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyЗначит, другого пути у тебя нет.
Придется оптимизировать StringBuilder.

Какая глубокая мысль. Что же мы тут сами не доперли-то.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942911
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо бы еще пример оптимизации ))) где хотя бы 2-3 кратное ускорение можно выжать )))
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942919
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevХорошо бы еще пример оптимизации ))) где хотя бы 2-3 кратное ускорение можно выжать )))
про 2-3 кратное ускорение:

судя по постам в других потоках и форумах - почти наверно в качестве источника данных у Вади используется Oracle.

на ютубе есть кино от оракл, в котором утверждается буквально следующее:
всякий, кто сел оптимизировать ява-код, в который "из базы приходит N записей в ResultSet", и не добился ускорения в 40000 (по буквам в сорок тысяч раз - 4 порядка с коэффициентом 4) - занялся не своим делом.
Лучше бы посуду на кухне помыл, или пивные бутылки с окурками на мусорку вынес.

Вадя, не знаю, что и как ты там сортировал, но оптимизация твоего кода должна начинаться с танцев вокруг setFetchSize.
А вот продолжаться, в зависимости от проявленного креатива, может в любом понравившемся направлении.

Посмотри это кино.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942966
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесть
StringBuilder sf = new StringBuilder(250000);
в цикле он заполняется примерно так
sf.append("лялялялялялялял).append(String)
.append(int)
.append("d gdfgs fhs fghjsfgj fgjg hsdfh swfhwgfjhfjdfgjd ghjdgh")
и т.д.
длина sf может быть различна
максимальная длина заполняется 50мс
можно как-либо ускорить?

форматный вывод пробовал ?
(format)
Может оказаться быстрее... А может и медленнее.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38942967
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevвадя....
из базы приходит N записей в ResultSet

Сомневаюсь, что в данном случае будет тормозить StringBuilder.


У него наверное в профайлере дофига выполнений этого места кода, и из-за этого он считает, что это -- узкое место.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38943096
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Если в строке StringBuilder sf = new StringBuilder(250000); число 250000 взято с потолка - надо его взять не с потолка, а сразу поставить достаточное для самого неблагоприятного случая, чтобы не было лишних grow-ов с копированиями.
2. использовать серверную jvm
3. по возможности, предпочитать делать мало крупных append-ов, и стараться не делать много мелких.


и еще.
Обычно StringBuilder используется для того чтобы потом создать строку. И не факт, что такие большие строки - это именно то что вам надо. Возможно, следует от этого уйти.


Но это все имеет смысл, если тормозит именно стрингбилдер. 50мс - это, наверное, должен быть очень большой стрингбилдер. Не 250кб - точно. Там скорей всего в цикле делается еще что-то, и тормозит не странгбилдер.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38943100
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokНо это все имеет смысл, если тормозит именно стрингбилдер. 50мс - это, наверное, должен быть очень большой стрингбилдер.
Или очень часто вызываться. Я не понял 50мс - это вызов одного append или все-таки сумарное время всех append?
Если второе, но недавно игрался с небольшой утилиткой, так у меня там в итоге процентов 40% стало уходить на String.format, Number.format и прочее (какой-то format занимал 400мс из 2с). Утилита считывала 2Мб файл с числами и преобразовала в текст по хитрому алгоритму.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38943122
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор3. по возможности, предпочитать делать мало крупных append-ов, и стараться не делать много мелких.
у меня в цикле 64 append
число 250000 взято не с потолка - в конце стоит
System.out.println("sf len " + sf.length());
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38943133
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvchabapokНо это все имеет смысл, если тормозит именно стрингбилдер. 50мс - это, наверное, должен быть очень большой стрингбилдер.
Или очень часто вызываться. Я не понял 50мс - это вызов одного append или все-таки сумарное время всех append?
Если второе, но недавно игрался с небольшой утилиткой, так у меня там в итоге процентов 40% стало уходить на String.format, Number.format и прочее (какой-то format занимал 400мс из 2с). Утилита считывала 2Мб файл с числами и преобразовала в текст по хитрому алгоритму.
Кстати тривиальный String::split(..), String::replaceAll(..) может внезапно вылезти боком. У нас
на проекте их использовали для формирования Rest запроса но оказалось что стреляли
из пушки по маленьким птичкам. Регекспы работают там где мы не ожидали их появления.
Переписываем на апачевские имплементации тех-же split, replace. Чортов Гослинг. Старая
задница. Так испортил фундаметнальный тип.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38944310
Kenny Fartman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevTo All: а почему авторы JRE любят классы делать final? Нафига?Вроде там JVM если видит что класс не будет расширяться может применять свои оптимизации
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38944323
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kenny FartmanВроде там JVM если видит что класс не будет расширяться может применять свои оптимизации
Так как все публичные методы являются виртуальными, JVM для final классов может применить оптимизацию и заменить виртуальные вызовы на прямые, которые будут быстрее.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38944370
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev...
To All: а почему авторы JRE любят классы делать final? Нафига?

final метод может быть заинлайнен JIT-ом.
Не "вызов заменен на прямой", а вызов заменен на прямую подстановку тела final метода в точке его вызова.

final - переменные играют роль immutable значений, безопасно используемых в качестве глобальных и автоматически видимых для inner-классов.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38944406
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сиськинfinal метод может быть заинлайнен JIT-ом.
Не "вызов заменен на прямой", а вызов заменен на прямую подстановку тела final метода в точке его вызова.

final - переменные играют роль immutable значений, безопасно используемых в качестве глобальных и автоматически видимых для inner-классов.
Речь идёт о классах, а не методах и полях.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38944629
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kenny FartmanLeonid KudryavtsevTo All: а почему авторы JRE любят классы делать final? Нафига?Вроде там JVM если видит что класс не будет расширяться может применять свои оптимизации

Нет. Оптимизатор работает с загруженными классами, так что ему неважно, объявлен ли класс финальным, или нет.

А по финальности- вопрос скорее в безопасности. По крайней мере так обстоит дело со String.

А где ещё "любят делать"?
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38944659
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominНет. Оптимизатор работает с загруженными классами, так что ему неважно, объявлен ли класс финальным, или нет.

https://wikis.oracle.com/display/HotSpotInternals/VirtualCalls an invokevirtual bytecode might in fact collapse into the equivalent of an invokestatic bytecode

Alexey TominА по финальности- вопрос скорее в безопасности. По крайней мере так обстоит дело со String.
А где ещё "любят делать"?
Вероятно, речь о StringBuilder.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38944667
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно унаследоваться от AbstractStringBuilder.
...
Рейтинг: 0 / 0
Ускорение StringBuilder
    #38944803
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAlexey TominНет. Оптимизатор работает с загруженными классами, так что ему неважно, объявлен ли класс финальным, или нет.

https://wikis.oracle.com/display/HotSpotInternals/VirtualCalls an invokevirtual bytecode might in fact collapse into the equivalent of an invokestatic bytecode

О чём и речь- реально это будет, если метод перекрыт один раз, или не перекрыт вообще. Когда один раз- заменяется на if какой-то. Точно не помню, т.к. слышал на стенде у Шипилёва/Куксенко.

BlazkowiczAlexey TominА по финальности- вопрос скорее в безопасности. По крайней мере так обстоит дело со String.
А где ещё "любят делать"?
Вероятно, речь о StringBuilder.

Возможно речь тоже о безопасности. Либо о том, чтобы не думать о возможных наследниках (в вопросах совместимости).
...
Рейтинг: 0 / 0
66 сообщений из 66, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Ускорение StringBuilder
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]