Профилировали ли вы свою заявку? Вы знаете, где находятся узкие места? Это первый шаг, если производительность ниже номинальной. Ну, это и определение приемлемых показателей производительности.
После того, как вы профилировали выполнение некоторых задач, у вас будет процент времени, потраченного на выполнение задач. Если вы тратите много времени на манипуляции со строками, может быть, вы можете начать кэшировать некоторые из этих манипуляций? Делаете ли вы некоторые из них несколько раз, когда достаточно выполнить их один раз (а затем использовать этот результат позже, когда это необходимо)? Вы копируете строки, когда вам это не нужно? Помните, java.lang.String является неизменным, поэтому его нельзя изменить напрямую.
Я обнаружил, что при оптимизации / настройке производительности системы, над которой я работаю, несколько раз я не знаю, откуда инстинктивно возникает медлительность. Я видел, как другие (и, к сожалению, я) проводили дни, оптимизируя что-то, что не дает никакой выгоды - потому что это не было первоначальным узким местом, и фактически было потрачено менее 1% времени.
Надеюсь, это поможет вам в правильном направлении.