Данила Слынько
Доброго вечера, господа! Подскажите, пожалуйста, как можно оптимизировать строчку string.replaceAll("\"", "'").replaceAll("\n", "").replace("[]", "{}") по производительности в 8-ой джаве? Задача стоит "оптимизировать return-выражение". Думал про регулярки и Stream API, но с регулярками не смог придумать, как уместить все в одну строчку, а Stream API, скорее всего, окажется крайне тормозным. Заранее спасибо!
Во-первых, не думаю, что стрим даст хоть какой-то значимый оверхед. А вот регулярки - имхо дадут. Опять же возможно ошибаюсь и лучше всего написать бенчмарк, а не оптимизировать вслепую.
Во-вторых, если надо совсем жестко оптимизировать, я сначала создал бы массив длиной со строку, потом итерировался бы по символам строки и переносил бы (меняя или пропуская при необходимости) их в этот массив, считая, сколько символов пропущено. В конце сделал бы подмассив за минусом пропущенных символов и при помощи конструктора строки из массива сделал бы итоговую строку. Вроде так в google-guava StringUtils сделано например. Флаг изменений можно сделать и кидать исходную строку, если не поменялось ничего (хотя это нехороший контракт - лучше в любом случае новую строку выдавать, разве что совсем сильно перформанс нужен).