Заставить JAXB работать быстрее

У меня есть файл размером 8 мегабайт. Маршаллинг с использованием JAXB занимает 1082 мс, с использованием DOM - 862 мс, с использованием SAX - 438 мс. При этом используются все настройки по умолчанию в JDK 1.6, никаких дополнительных конфигураций, таких как использование woodstox, не используется.

В попытке получить лучшую производительность от JAXB, я пытаюсь заставить его использовать SAX парсинг, делая...

FileReader fr = new FileReader("myfile.xml");
JAXBContext jc = JAXBContext.newInstance(MyObjectList.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();

XMLInputFactory xmlif = XMLInputFactory.newInstance();
XMLEventReader xmler = xmlif.createXMLEventReader(fr);

long beginTime = System.currentTimeMillis();
MyObjectList obj = (MyObjectList)unmarshaller.unmarshal(xmler);
long endTime = System.currentTimeMillis();

Это заставляет его работать еще медленнее - 3207 мс.

Мои вопросы таковы: 1. Как заставить JAXB работать быстрее? 2. Как я могу быть на 100% уверен, какой механизм парсинга используется?

12
задан More Than Five 24 December 2011 в 18:20
поделиться