我正在对性能进行非常基本的测试,以便将大量压缩的XML文件解组为基本数据结构。
我使用相同的输入流和从JAXB Context创建的相同unmarshaller。
简单方法 - 默认JAXB - 需要18秒
unmarshaller.unmarshal(createFileInputStream());
使用SAX将SAX源中的输入流包裹到(我认为)强制 - 需要20秒
unmarshaller.unmarshal(new InputSource(createFileInputStream());
试图强制使用STAX - 需要40秒!
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(createFileInputStream());
unmarshaller.unmarshal(reader);
比较简单的STAX流读取器循环以提取相同的数据只需要14秒。
我在看Can JAXB parse large XML files in chunks
为什么默认方法(传递输入流)比SAX和STAX都快?默认使用什么?
为什么STAX方法在提到的文章中采用推荐的方法时是如此懒散?