JAXB在引擎盖下使用了什么?

时间:2017-02-17 08:12:15

标签: java xml jaxb sax stax

我正在对性能进行非常基本的测试,以便将大量压缩的XML文件解组为基本数据结构。

我使用相同的输入流和从JAXB Context创建的相同unmarshaller。

1

简单方法 - 默认JAXB - 需要18秒

unmarshaller.unmarshal(createFileInputStream());

2

使用SAX将SAX源中的输入流包裹到(我认为)强制 - 需要20秒

unmarshaller.unmarshal(new InputSource(createFileInputStream());

3

试图强制使用STAX - 需要40秒!

XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(createFileInputStream());
unmarshaller.unmarshal(reader);

比较简单的STAX流读取器循环以提取相同的数据只需要14秒。

我在看Can JAXB parse large XML files in chunks

问题

为什么默认方法(传递输入流)比SAX和STAX都快?默认使用什么?

为什么STAX方法在提到的文章中采用推荐的方法时是如此懒散?

0 个答案:

没有答案