我正在采用的项目是使用 JaxB API 将 XML 解组为 Java 对象。我们将 ByteArrayInputStream 传递给 Unmarshaller,例如:
ByteArrayInputStream bais = new BytearrayInputStream(byte[]...)
unmarshaller.unmarshal(bais)
现在我想找到优化此过程速度的方法,因为字节数组非常小(默认 JaxB 大约需要 1-5 毫秒),但它们有很多。我尝试将不同的输入(如 StAX、StAX-Woodstox 解析器和 StreamSource 对象)传递给 Unmarshaller 以进行比较。
unmarshall(..XMLInputFactory -> XMLStreamReader(bais)..)
unmarshall(..XMLInputFactory2 ->XMLStreamReader(bais)..)
unmarshall(..StreamSource(bais)..)
在大约 5000 次尝试中,StAX-Woodstox 解析器的性能优于其他解析器。
以下是我想问的 2 个问题:
- 鉴于这些信息,您能想出一种更好的方法来优化速度吗?
- 通过 StAX-Woodstox 解析器速度更快的原因可能是什么?