Стереотип о том, что комменты должны быть на английском устарел и не нужен.
Это стереотип верен для проектов, которые хотя бы теоретически могут понадобиться хоть кому-то, кроме хозяина. С трудом себе представляю, чтобы кто-то мог заинтересоваться движком ЛОРа, не имея к ЛОРу никакого отношения.
Да пофиг пока на проходы, мне не нравится сам вид этого кода. Такую лапшу может написать только человек, которого на стажировку уже взяли, но первый коде ещё проверить никто не успел.
Вот это верно, это плюсую. Их replace и вызывать придётся один раз вместо четырёх, и он работает раза в 3-4 быстрее дефолтового. Итого скорость вырастет где-то на порядок.
Я посмотрел их реализацию. Задумка те же, что в моей самоделке, но они пошли чуть дальше. Время (миллисекунд) на миллион замен на моей машине при длине текста в 1000 символов:
input.replace(from,to); 2339
QUOTE_IN_OPEN_PATTERN.matcher(input).replaceAll(to); 2104
input.replaceAll(from,to); // неожиданно для меня 1532
самодельная реализация через StringBuilder и toCharArray 1125
StringUtils.replace(input, from, to); //Apache 478
Ужас. Зачем они вообще юзают ReplaceAll, если им надо заменять простой символ, а не проходиться regexp'ом? Replace — это неканонично?
Не принципиально — replace и replaceAll внутри работают через regexp'ы. Самое эффективное тут решение было бы просто пройтись циклом и заменить в нем нужные символы в один проход.
Не принципиально — replace и replaceAll внутри работают через regexp'ы. Самое эффективное тут решение было бы просто пройтись циклом и заменить в нем нужные символы в один проход.
Да, я так в своей реализации и делал. Там основной расход времени у меня был на StringBuilder.append, т.к. я тупо каждый символ append'ил отдельно, что не очень быстро.
чем изменял, jmh?
Да просто профилировщиком NetBeans'а. Загнал 5 функций замены последовательно в цикл и смотрел время выполнения каждой и долю времени.
Только что придумал ещё одну очень эффективную реализацию:
String.join(to, input.split(from))
У меня работает почти так же быстро, как апачевская реализация. Возможно, я чего-то ещё не учитываю, конечно.
Не знаю. Полагаете, что-то серьёзно изменилось в плане производительности? В любом случае, недолго проверить скорость исполнения на целевой машине и выбрать наилучший вариант.
Но смысл понятен? А комментарии сами по себе вторичны, если без них ни черта не понятно — то либо код полно говно и не стоит внимания, либо читатель дурак и ему следует идти шаурмой торговать.
Фраза из «В эпоху машинного перевода достаточно просто писать грамотно» превратилась в «В эру машинного перевода писать грамотно — достаточно просто». Изначальный смысл утерян.