Во-первых, решите, насколько сильно пострадают ваше приложение и разработчики, если вы устраните часть этого анализа. Более быстрое приложение не принесет пользы, если в процессе вы удвоите текучесть кадров! Я думаю, исходя из вашего вопроса, мы можем предположить, что вы уже прошли этот тест.
Во-вторых, если вы не можете устранить создание объекта, то ваша следующая цель должна состоять в том, чтобы он не пережил коллекцию Eden. И синтаксический анализ может решить эту проблему. Тем не менее, кэш, «реализованный правильно» (я не согласен с этой основной предпосылкой, но я не буду утомлять вас сопутствующими рассуждениями), обычно приводит к конфликту потоков. Вы бы заменили один тип давления памяти на другой.
Существует вариация идиомы поиска-разбора, которая меньше страдает от вида сопутствующего ущерба, который вы обычно получаете от полного кэширования, и это простая предварительно рассчитанная таблица поиска (см. Также «памятка»). Шаблон, который вы обычно видите для этого, - Тип Safe Enumeration (TSE). С помощью TSE вы анализируете строку, передаете ее в TSE, чтобы получить связанный перечислимый тип, а затем выбрасываете строку.
Является ли текст, который вы обрабатываете, произвольной формой, или ввод должен соответствовать жесткой спецификации? Если большая часть вашего текста отрисовывается до фиксированного набора возможных значений, то TSE может помочь вам в этом и послужит более серьезному мастеру: добавление контекста / семантики к вашей информации в момент создания, а не в момент использования ,