【问题标题】:XSLT templates with param带参数的 XSLT 模板
【发布时间】:2015-07-01 14:03:15
【问题描述】:

设置: Apache、Xalan 2.7.1、xslt 1.0 输入: 3 个文件 xml aprox. 750mb

给定一个由其名称调用的template with param,通过参数传递当前上下文或使用模板内部的current() 函数是否会提高性能?

<xsl:call-template name="one">
    <xsl:with-param name="context" select = "." />
</xsl:call-template>

    <!-- OR -->

<xsl:call-template name="two"/>

<xsl:template name="one"> 
    <xsl:param name = "context" />      
    <xsl:value-of select="$context/something"/>     
</xsl:template> 

<xsl:template name="two">   
    <xsl:value-of select="current()/somthing"/>     
</xsl:template>

【问题讨论】:

  • 如果您有兴趣回答性能问题,那么您需要使用特定的 XSLT 处理器并测量性能。
  • 我认为,如果存在差异,它可能会非常小,但正如 Martin 所说,找出差异的唯一方法是测量它。你真的有性能问题吗?如果有,那么更改此代码不是解决方案。如果你没有,那你为什么要问这个问题?
  • 我无法测试、测量或做任何会不必要地干扰服务器的事情。转型相当大。
  • 如果您无法进行测量,那么请忘记所有关于性能调整的想法。衡量是所有绩效工作的核心。
  • 我试图获得一些提升,即使是几秒钟也可以减少服务器任务的负载。

标签: templates xslt xalan


【解决方案1】:

正如@Michael Kay 建议的那样,我做了一些测试,with-param 似乎比 current() 函数稍快。

测试输入:xml file (540 mb),深度为 3 级 root/l1/l2/l3

测试在 apache Xalan 2.7.1 上运行了 8 次

with-param 显示大约。性能提高 20%

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-11
    • 2014-09-08
    • 2016-04-16
    • 2011-08-25
    • 2012-01-20
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多