@DmitryPros

Java: Чем заменить .replaceAll?

Согласно анализу методы использующие replaceAll занимают много времени a4d0075c794b48c38f6ffd5b1eacd731.PNG
Можно ли это как-то оптимизировать?
Вот код:
text = text
            .replaceAll(dictAdverbs, "")
            .replaceAll(serviceVocabulary, "")
            .replaceAll("(?iu)(\\b([^\\s]{0,3})\\b)", "")
            .replaceAll("(?iu)[^а-яa-z\\s]", " ")
            .replaceAll("(?iu)([\\s]{2,})", " ")
            .replaceAll("(?iu)(^[ ])", "");
  • Вопрос задан
  • 676 просмотров
Решения вопроса 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Ничем, надо просто включить голову и понять что у вас тут идет кошмарнейший оверхед по созданию куч строк что просто крайне медленно, кроме того каждый раз еще идет и компиляция регулярки что тоже дает оверхэд и воздь в гроб что все это еще и де то в компараторе что уже означает что это все дерается кошмарное число раз.
Итого надо:
1) Заранее единожды скомпилировать все регулярки.
2) Подумать каким образом такие тяжелые операции оказались в компараторе.
3) Возможно пересмотреть весь набор реулярок в 1 большую регулярку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы