XSLT函数调用的效率

时间:2013-06-01 16:57:50

标签: xslt

存储函数调用的结果比多次调用函数更有效吗?

示例 -

<xsl:variable name="time" select="current-dateTime()"/>
<myTime><xsl:value-of select="$time"/></myTime>
<yourTime><xsl:value-of select="$time"/></yourTime>

大于

<myTime><xsl:value-of select="current-dateTime()"/></myTime>
<yourTime><xsl:value-of select="current-dateTime()"/></yourTime>

2 个答案:

答案 0 :(得分:2)

嗯,(a)它显然取决于功能,(b)它显然取决于XSLT处理器。获得这种性能问题答案的唯一方法是测量它。甚至测量也可能无济于事,因为要进行测量,您通常需要进行人工操作,例如调用函数10000次,当您这样做时,优化器可能会对您的代码进行不同的处理,而不是只调用一次。

答案 1 :(得分:1)

与往常一样,这些事情在很大程度上取决于实际的实施。我要注意的一件事是函数调用是否可以在两次调用之间改变它的值 - 这可能很重要。

在这种情况下,函数是稳定的(参见here),因此实现可能还有一个缓存值,所以调用函数基本上只是一个非常便宜的“getter”实现(很可能是关于与读取变量的成本相同。)