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