我们可以做些什么来加快XML处理速度?

时间:2010-03-19 17:44:26

标签: java xml performance web-services parsing

我们致力于一个内部企业系统,该系统将Web前端作为其接口之一。

前端(Java + Tomcat + Apache)通过SOAP Web服务与后端(使用类似COBOL的语言编写的专有系统)进行通信。

因此,我们来回传递大型XML文件。

我们认为,由于XML传输和解析的大量开销,这种架构对性能有重大影响。不幸的是,我们坚持使用这种架构。

我们如何才能使这种XML设置更有效?

非常感谢任何提示或技巧。

6 个答案:

答案 0 :(得分:8)

仿形!

在负载下对系统进行适当的分析 - 这里没有足够的信息。

你需要弄清楚时间在哪里以及瓶颈是什么(网络带宽,CPU,内存等......)。只有这样你才知道该怎么做 - 许多优化实际上只是权衡(例如缓存是牺牲内存以提高其他地方的性能)

我唯一能想到的就是确保你使用HTTP压缩和Web服务 - 通常可以将XML压缩到正常大小的一小部分,但这只会对你有帮助CPU周期备用。

答案 1 :(得分:3)

如果两端都支持,你可以压缩传输,你可以尝试不同的解析器,但是因为你说SOAP没有太多选择。无论如何,SOAP还是臃肿了。

答案 2 :(得分:3)

如果您认为这是由于带宽问题,我将在这里提出建议GZIP Compression。 (你提到过XML Transportation)是的,这会增加你的CPU时间,但它可能会加快传输速度。

Here's the first Google hit on GZIP Compression作为起点。它描述了它如何在Apache上运行。

答案 3 :(得分:2)

首先确保您的解析方法对大型文档有效。 StAX是解析大型文档的好方法。

此外,您可以查看binary XML方法。这些提供了更有效的传输,但也尝试帮助解析。

答案 4 :(得分:1)

尝试StAX。它执行well并且语法简洁明了。

答案 5 :(得分:1)

检查您的应用程序是否将整个XML文档作为DOM树读入。这些可能非常大,而且经常可以使用简单的SAX事件检查或基于SAX的XSLT程序(可以编译以便快速处理)。

这在Sun Java 6 JDK中像visualvm这样的分析器中非常明显