1
我正在採用的項目是使用JaxB API將XML解組到Java對象。我們傳遞一個ByteArrayInputStream給Unmarshaller的,如:JaxB性能增強
ByteArrayInputStream bais = new BytearrayInputStream(byte[]...)
unmarshaller.unmarshal(bais)
現在我想找到方法來優化鑑於字節數組是非常小的這一過程的速度(默認JAXB需要大約1-5ms),但有一噸他們。我試圖傳遞給Unmarshaller不同的輸入,比如StAX,StAX-Woodstox解析器和StreamSource對象。
unmarshall(..XMLInputFactory -> XMLStreamReader(bais)..)
unmarshall(..XMLInputFactory2 ->XMLStreamReader(bais)..)
unmarshall(..StreamSource(bais)..)
出大約5000次嘗試,StAX的Woodstox解析器出來已經執行比別人更好。
這裏是我要問兩個問題:
- 鑑於這些信息,你能想到更好的辦法在速度方面進行優化呢?
- 爲什麼通過StAX-Woodstox解析器可以獲得更好的速度,這可能是什麼原因?