为什么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:第二种将文档的完整结构加载到内存中,第一个处理文档,当它加载时需要,因为它被加载。
其他图像可能正在使用迭代器与使用整个列表。
希望它有帮助