我有一个 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();
这使它变得更慢 - 3207ms。
我的问题是: 1. 如何让 JAXB 运行得更快?2. 我怎样才能 100% 确定它使用的是什么底层解析机制?