我们的 Java 应用程序使用 XSL 表将 XML 转换为“合适的”XML。问题是结果 XML 大约有 20000 多行,并且在 Java 中转换需要时间(在生产机器上大约需要 30 秒)。
这对于企业来说是 Not Acceptable ,我正在寻找优化 XSLT 的方法。
目前我使用 XSLT 2.0 分组:
<xsl:for-each-group select="reportContent/transaction" group-by="transactionId">
我们的一位开发人员认为这是性能缓慢的原因(确实如此。如果我删除分组,我会得到 2 倍的提升)并建议使用 Muenchian 方法 进行分组。
在我开始重写大量代码之前,我想了解是否有其他人经历过类似的事情,并且将分组重写为 Muenchian 方法 可以提高性能。
最佳答案
没有什么内在原因可以解释为什么 Muenchian 分组应该比 <xsl:for-each-group>
更快。 (事实上,人们通常会期望它会慢一点,这是有原因的)。但对于性能来说,问题总是在于细节,当然,除非在特定的 XSLT 2.0 实现的上下文中,否则提出有关此类性能比较的问题是没有意义的。
对于这项任务来说,30 秒听起来非常慢,我当然怀疑可以进行改进。理想情况下,在开始任何实验性调整之前,您应该深入了解时间都花在哪里:例如,像 Saxon 的 -TP:profile.html
这样的工具。可能是无价的。
关于java - XSLT分组: "Muenchian Method" vs for-each-group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41445897/