Есть ли у вас особые основания полагать, что SimpleDateFormat
неэффективен при разборе дат?Если ваши даты не имеют очень специфической характеристики, которая поддается определенной оптимизации, я бы подумал, что класс JDK выполнит разумную работу.
Тем не менее, наПредполагая, что ваши даты не все различны (маловероятно, что с 100 КБ), вы можете посмотреть на кеширование - заполните карту с передачей String
и выходом Date
.Это, вероятно, значительно сократит количество необходимых разборов;это может или не может привести к заметному ускорению / увеличению памяти в зависимости от существующих характеристик.
Кроме того, создание двух новых SimpleDateFormat каждый раз может быть очень неэффективным.Почему бы не создать эти экземпляры один раз при загрузке класса (если формат не изменяется по строке)?Это само по себе может решить вашу проблему, если внутренняя часть SDF такова, что при первом запуске она занимает много места char[]
.(Помните, что причудливые форматы дат не поддерживают многопотоковое исполнение, поэтому вам может потребоваться ThreadLocal<DateFormat>
, если ваш класс синтаксического анализа используется одновременно).