【问题标题】:Java - XML parser performance : Sun Java Streaming XML Parser (SJSXP) vs WoodstoxJava - XML 解析器性能:Sun Java Streaming XML Parser (SJSXP) vs Woodstox
【发布时间】:2012-08-02 08:25:40
【问题描述】:

我正在寻找最新的、内存效率高的高性能 java XML 解析 API。 我需要解析 3 MB 到 5 MB 的 XML 文件。

我对此进行了谷歌搜索,了解到 Sun Java Streaming XML Parser (SJSXP) 和 Woodstox 比 DOM 和 SAX 快得多。两者都使用 StAX API。 *这些技术不支持架构验证。

Aalto XML 处理器也实现了 StAX API。

我还没有找到关于这些技术性能的具体发现。

哪一个在内存效率、高性能和易用性方面最好?

【问题讨论】:

  • 如果您无法为它们找到任何有用的性能数据,您始终可以自己测试它们,看看哪一个最适合您的特定情况。
  • 性能可能取决于您的具体情况。当性能至关重要时,我编写了专为确切用例设计的解析器,这将性能提高了 10 倍(但您必须建立许多影响健壮性和灵活性的假设)
  • 我正在寻找上述技术的行业标准基准数据。
  • @Santosh 没有基准测试主要有两个原因:(a) 在过去 3 年左右的时间里,Java/XML 解析几乎没有任何进展,以及 (b) XML 正在丢失它对数据交换的重要性(相对于文本标记),因此很少有开发人员真正关心。
  • StaxMan(尽管 havig 编写了一些出色的 XML 解析器)关于 (b) 是完全错误的。金融服务行业正在以 FpML 等格式交换数十亿条消息,并且不会很快改变;他们的表现是绝对关键的。不同的是,这些人知道增加 10% 的硬件能力比寻找快 10% 的解析器要便宜得多。此外,XML 解析通常只占整个消息处理路径长度的 5%。

标签: java xml xml-parsing stax woodstox


【解决方案1】:

这里还有一些可能相关的链接:

性能方面:SJSXP 最慢;它只是 Xerces 内部的重新包装,包装在 Stax API 中。这对性能有一些负面影响(因为它并不是真正为拉解析而设计的)。伍德斯托克斯快一点;小文档和写作速度更快,解析较长文档时差异更小。

到目前为止,Aalto 是三者中最快的,尤其是在解析方面。它通常比 Woodstox 或 SJSXP 快 50% - 100%。一个缺点是它不处理 DTD(因此不处理外部实体;它处理预定义和字符实体)。

免责声明:我是 Woodstox 和 Aalto 的作者;以及 SJSXP 的贡献者(错误修复)

【讨论】:

  • 寻找 Aalto XML 处理器示例以供参考。任何帮助!
  • 它实现了 Stax API,所以应该没有什么特别之处......只是使用 Woodstox 示例代码?或者,因为它也实现了 SAX(就像 Woodstox 3.2 及更高版本一样),所以也可以使用 SAX API。
  • Aalto 还在开发中吗?我注意到上一次发布是在 2 年前。
  • 由于缺乏反馈和请求,没有太多正在进行的工作——它可以达到用户想要的程度。这可能更多是因为 JSON 成为新开发的主要数据格式。但是项目并没有死;应迅速处理报告的问题的错误修复。
【解决方案2】:

【讨论】:

  • 您答案中的链接已有 2-5 年的历史,可能太旧,无法准确代表所讨论的库的当前性能。
  • SJSXP 在过去 3 年左右的时间里并没有真正改变,只是修复了一些错误。和 AFAIK,没有性能变化。这是缺乏新基准的最大原因,因为几乎没有什么变化。
猜你喜欢
  • 1970-01-01
  • 2011-07-01
  • 2012-12-02
  • 2012-11-17
  • 2012-03-07
  • 1970-01-01
  • 2012-01-29
  • 2012-03-23
  • 2011-11-26
相关资源
最近更新 更多