Проект, который я принимаю, использует JaxB API для демаршалирования объектов XML в Java. Мы передаем ByteArrayInputStream в Unmarshaller, например:
ByteArrayInputStream bais = new BytearrayInputStream(byte[]...)
unmarshaller.unmarshal(bais)
Теперь я хотел бы найти способы оптимизировать скорость этого процесса, учитывая, что массив байтов действительно мал (по умолчанию JaxB занимает около 1-5 мс), но их множество. Я пытался передать Unmarshaller различные входные данные, такие как парсеры StAX, StAX-Woodstox и объект StreamSource для сравнения.
unmarshall(..XMLInputFactory -> XMLStreamReader(bais)..)
unmarshall(..XMLInputFactory2 ->XMLStreamReader(bais)..)
unmarshall(..StreamSource(bais)..)
Из примерно 5000 попыток анализатор StAX-Woodstox показал себя лучше, чем другие.
Вот 2 вопроса, которые я хочу задать:
- Учитывая эти фрагменты информации, не могли бы вы придумать лучший способ оптимизировать это с точки зрения скорости?
- Что может быть причиной того, что прохождение парсера StAX-Woodstox дало лучшую скорость?