xml - XML 解析器/验证器的算法复杂性

标签 xml algorithm performance

我需要了解不同 XML 工具(解析器、验证器、XPath 表达式求值器等)的性能如何受到输入文档的大小和复杂性的影响。是否有资源记录了 CPU 时间和内存使用情况如何受到……好吧,什么?文档大小(以字节为单位)?节点数?关系是线性的、多项式的还是更糟?

更新

在 IEEE Computer Magazine,第 41 卷第 9 期,2008 年 9 月的一篇文章中,作者调查了四种流行的 XML 解析模型(DOM、SAX、StAX 和 VTD)。他们运行了一些非常基本的性能测试,这些测试表明当输入文件的大小从 1-15 KB 增加到 1-15 MB 或大约 1000 倍时,DOM 解析器的吞吐量将减半。其他模型的吞吐量没有受到显着影响。

遗憾的是,他们没有进行更详细的研究,例如吞吐量/内存使用量作为节点数量/大小的函数。

文章是here.

更新

我找不到任何关于这个问题的正式处理方法。对于它的值(value),我做了一些实验来测量 XML 文档中的节点数作为文档大小(以字节为单位)的函数。我正在研究仓库管理系统,XML 文档是典型的仓库文档,例如提前发货通知等

下图显示了以字节为单位的大小与节点数之间的关系(这应该与 DOM 模型下文档的内存占用量成正比)。不同的颜色对应不同种类的文档。尺度是对数/对数。黑线最适合蓝点。有趣的是,对于各种文档,字节大小和节点大小之间的关系是线性的,但比例系数可能非常不同。

benchmarks-bytes_vs_nodes
(来源:flickr.com)

最佳答案

如果我遇到这个问题并且在谷歌上找不到任何东西,我可能会尝试自己解决。

一些“信封背面”的内容可以让您了解它的发展方向。但这有点需要我了解如何进行 xml 解析器。 对于非算法基准,请看这里:

关于xml - XML 解析器/验证器的算法复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31826/

相关文章:

java - 在循环中使用 XPath 表达式

javascript - 在 JavaScript 中将 XML 字符串转换为 HTML 形式

java - 在java中将xml解析为字符串以在sitemap.xml中给出优先级值

php - 如何使用自定义条件从 PHP 中的多维数组中删除重复值

JavaScript浏览器解析速度测试

C# int.ParseInt() 性能问题

java - 将 List<String> 转换为 HashSet<String> Java 的好处

xml - cvc-elt.1.a : Cannot find the declaration of element 'xxx'

algorithm - 根据数据完成一个基于RDD的RDD

java - 制作电脑艺术的策略