这个问题有点相关用于 Java 中小型、简单文档的最快 XML 解析器 https://stackoverflow.com/questions/530064/fastest-xml-parser-for-small-simple-documents-in-java但还有一些细节。
我正在开发一个需要解析许多(数十百万)小型(大约 300k)xml 文档的应用程序。当前的实现使用 xerces-j,在 1.5 GHz 机器上每个 xml 文档大约需要 2.5 毫秒。我想提高这个性能。我看到这篇文章
http://www.xml.com/pub/a/2007/05/16/xml-parser-benchmarks-part-2.html http://www.xml.com/pub/a/2007/05/16/xml-parser-benchmarks-part-2.html
声称 libxml2 的解析速度比任何 java 解析器快一个数量级。我不确定我是否相信,但这引起了我的注意。有人尝试过从 jvm 使用 libxml2 吗?如果是这样,它比 java dom 解析(xerces)更快吗?我想我仍然需要 java dom 结构,但我猜测从 c 结构 dom 复制到 java-dom 应该不会花很长时间。我必须有 java-dom - 在这种情况下 sax 不会帮助我。
update:我刚刚为 libxml2 编写了一个测试,它并不比 xerces 快...尽管我的 C 编码能力非常生疏。
update我在这里扩大了问题的范围:为什么sax解析比dom解析快?斯塔税是如何运作的? https://stackoverflow.com/questions/3825206/why-is-sax-parsing-faster-than-dom-parsing-and-how-does-stax-work我对抛弃 dom 的可能性持开放态度。
Thanks
在 Java 中,StAXJSR-173 http://jcp.org/en/jsr/detail?id=173通常被认为是解析 XML 最快的方法。 StAX 有多种实现,Woodstox http://woodstox.codehaus.org/人们普遍认为实施速度很快。
为了提高性能,我会避免使用 DOM。你用 XML 做什么?如果您最终将其作为对象处理,则应该考虑 OXM 解决方案。标准是JAXBJSR-222 http://jcp.org/en/jsr/detail?id=173。 JAXB 实现例如MOXy http://www.eclipse.org/eclipselink/moxy.php(我是技术主管)甚至允许您进行部分映射,这将提高性能:
- http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)