java - XSLT分组: "Muenchian Method" vs for-each-group

标签 java xml xslt

我们的 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/

相关文章:

java - 使用sqlite登录失败

java - 在 pom.xml 中指定目标

在django spyne中进行多数据处理的xml

xml - 创建没有域的 XML 命名空间

java - 如何强制 javax xslt 转换器使用 utf-8 而不是 html 实体对国家字符进行编码?

java - java程序总是创建一个新的数据库

java - 使用 java 9 编译 lambda 表达式时 Maven 构建失败

java - 任何人都可以解释 Selenium 中的屏幕截图吗?

java - javax.xml.transform 使用什么处理器?

java - xslt 内未封闭的 html 标签