我在幾個地方看過StreamingMarkupBuilder比MarkupBuilder更適合編寫大型XML文檔。然而,我一直無法找到一個明確的答案,爲什麼這是。爲什麼StreamingMarkupBuilder在編寫大型文檔方面比MarkupBuilder執行效果更好
有人能解釋爲什麼StreamingMarkupBuilder比MarkupBuilder編寫大型文檔更好嗎?
我在幾個地方看過StreamingMarkupBuilder比MarkupBuilder更適合編寫大型XML文檔。然而,我一直無法找到一個明確的答案,爲什麼這是。爲什麼StreamingMarkupBuilder在編寫大型文檔方面比MarkupBuilder執行效果更好
有人能解釋爲什麼StreamingMarkupBuilder比MarkupBuilder編寫大型文檔更好嗎?
正如我所看到的主要區別是在與Identation的開銷。當流式寫入器產生單行輸出時,MarkupBuilder會做出很多操作來製作prettyPrinted xml字符串。
正如我所想,您可以提供您的IndentPrinter,並儘量減少開銷。
還有一個相同的問題here,但答案不太清楚。
由名稱,我應該建議,Streaming將直接在流中寫入數據,Not-Streaming版本 - 累積內存中的文檔結構。但在StreamingMB和Ordinary MB的來源中,我找不到一個核心區別,也就是說MB正在存儲不必要的數據。
所以,我認爲,縮進只是瓶頸。
在我的理解中,streamingMarkupBuilder vs. MarkupBuilder有點像SAX vs. DOM:第二種將文檔的完整結構加載到內存中,第一個處理文檔,當它加載時需要,因爲它被加載。
其他圖像可能正在使用迭代器與使用整個列表。
希望它有幫助