【问题标题】:XSLT grouping: "Muenchian Method" vs for-each-groupXSLT 分组:“Muenchian 方法”与 for-each-group
【发布时间】:2017-01-03 14:36:14
【问题描述】:

我们的 Java 应用程序使用 XSL 表将 XML 转换为“合适的”XML。问题是结果 XML 大约有 20000+ 行,并且在 Java 中转换需要时间(在生产机器上大约需要 30 秒)。

这对于企业来说是不可接受的,我正在寻找优化我的 XSLT 的方法。

目前我使用 XSLT 2.0 分组:

<xsl:for-each-group select="reportContent/transaction" group-by="transactionId">

我们的一位开发人员认为这是性能缓慢的原因(确实如此。如果我删除分组,我会获得 2 倍的提升)并建议使用 Muenchian 方法 进行分组。

在我开始重写大量代码之前,我想看看是否有其他人遇到过类似的情况,并且将分组重写为 Muenchian 方法 可以提高性能。

【问题讨论】:

  • 为什么用 Muenchian 分组替换 &lt;xsl:for-each-group select="reportContent/transaction" group-by="transactionId"&gt; 需要“重写很多代码”?如果您认为该方法更快,则实施它并对其进行分析以比较结果。 Muenchian 分组是一种 XSLT 1.0 技术,我怀疑 2017 年的 XSLT 2.0 处理器无法以相当的性能实现for-each-group。至于提高性能,您可以查看提供编译的商业包。

标签: java xml xslt


【解决方案1】:

Muenchian 分组应该比&lt;xsl:for-each-group&gt; 快没有内在原因(事实上,通常人们认为它会慢一点是有原因的)。但是对于性能,魔鬼总是在细节中,除非在特定的 XSLT 2.0 实现的上下文中,询问有关此类性能比较的问题当然没有意义。

30 秒对于这项任务来说听起来很慢,我当然怀疑改进是可能的。理想情况下,您应该在开始任何实验性调优之前深入了解时间的去向:例如,像 Saxon 的 -TP:profile.html 这样的工具可能非常宝贵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多