为什么StreamingMarkupBuilder在编写大型文档方面比MarkupBuilder执行效果更好

问题描述:

我在几个地方看过StreamingMarkupBuilder比MarkupBuilder更适合编写大型XML文档。然而,我一直无法找到一个明确的答案,为什么这是。为什么StreamingMarkupBuilder在编写大型文档方面比MarkupBuilder执行效果更好

有人能解释为什么StreamingMarkupBuilder比MarkupBuilder编写大型文档更好吗?

正如我所看到的主要区别是在与Identation的开销。当流式写入器产生单行输出时,MarkupBuilder会做出很多操作来制作prettyPrinted xml字符串。

正如我所想,您可以提供您的IndentPrinter,并尽量减少开销。

还有一个相同的问题here,但答案不太清楚。

由名称,我应该建议,Streaming将直接在流中写入数据,Not-Streaming版本 - 累积内存中的文档结构。但在StreamingMBOrdinary MB的来源中,我找不到一个核心区别,也就是说MB正在存储不必要的数据。

所以,我认为,缩进只是瓶颈。

在我的理解中,streamingMarkupBuilder vs. MarkupBuilder有点像SAX vs. DOM:第二种将文档的完整结构加载到内存中,第一个处理文档,当它加载时需要,因为它被加载。

其他图像可能正在使用迭代器与使用整个列表。

希望它有帮助