使用Saxon库时CPU使用率很高

时间:2012-03-28 04:37:16

标签: java xml performance xslt saxon

我使用Saxon Java库来合并两个文件。 XSLT文件位于here

我发现即使有两个小的xml文件(每个约15个节点),当Saxon合并文件时,CPU使用率也会高峰。我也尝试将Saxon用于小型XML文件(~15个节点)的其他用例修改属性,我发现了相同的结果。

一般来说,XSLT处理CPU密集型任务吗?或者它是撒克逊人的已知行为?

2 个答案:

答案 0 :(得分:3)

我认为Oliver Becker的合并样式表具有O(n ^ 2)性能,也就是说,如果您将输入的大小加倍,则需要四倍的时间。这不是XSLT的一般属性,它是Oliver正在使用的算法的属性。利用XSLT 2.0的深度相等()函数可以使代码更有效(尽管仍然是二次),但是比这更需要设计不同的算法:例如,预处理通过两个树计算每个节点的哈希码,以便后续测试两个树是否等效,这减少了两个哈希码的比较。

答案 1 :(得分:1)

IMHO XSLT非常占用CPU,但对于一个小文件,它仍然应该是简短的。

我建议你写一个简单的基准来看看转换一个小文件需要多长时间。通过至少10,000x的转换确保您的JVM已经预热,并测试在预热后至少2秒重复完成所需的时间。