我在多个地方读到,StreamingMarkupBuilder 比 MarkupBuilder 更适合编写大型 XML 文档。然而,我一直无法找到确切的答案来解释为什么会这样。
有人可以解释一下为什么 StreamingMarkupBuilder 在编写大型文档时比 MarkupBuilder 表现更好吗?
最佳答案
据我所知,主要区别在于标识的开销。当流式编写器生成一行输出时,MarkupBuilder 会执行大量操作来生成 PrettyPrinted xml 字符串。
我认为,您可以提供 IndentPrinter,从而最大限度地减少开销。
有同样的问题here ,但回答不太清楚。
从名字上看,我应该建议,Streaming 将直接在流中写入数据,而 Not-Streaming 版本 - 累积内存中的文档结构。但在StreamingMB的来源和 Ordinary MB我找不到核心区别,可以说,MB 正在存储不必要的数据。
所以,我认为,缩进只是瓶颈。
关于xml - 为什么 StreamingMarkupBuilder 在编写大型文档时比 MarkupBuilder 表现更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20217476/