1

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

例子 -

<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>
4

2 回答 2

2

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

于 2013-06-01T20:03:24.330 回答
1

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

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

于 2013-06-01T17:01:40.030 回答