У меня есть файл размером 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% уверен, какой механизм парсинга используется?