键和计数优化

时间:2011-12-05 14:05:07

标签: xslt

执行此操作是有价值的(内存,CPU,时间):

<xsl:variable name="node" select="key('mykey',category)"/>
<xsl:value-of select="count($node[value/text() = 10.0])"/>
<xsl:value-of select="count($node[value/text() = 5.0])"/>
<xsl:value-of select="count($node[value/text() = 0.0])"/>

而不是:

<xsl:value-of select="count(key('mykey',category)[value/text() = 10.0])"/>
<xsl:value-of select="count(key('mykey',category)[value/text() = 5.0])"/>
<xsl:value-of select="count(key('mykey',category)[value/text() = 0.0])"/>

或其他方式??

1 个答案:

答案 0 :(得分:0)

它可能会产生一些小的差异,但可能并不重要。但性能问题的答案始终是(a)它取决于您使用的处理器,以及(b)测量它以找出答案。

我建议使用[value=0.0]而不是[value/text()=0.0]。使用/ text()是一种坏习惯,似乎越来越多地来自XQuery世界。除非您的数据包含注释或内联元素或非规范化的相邻文本节点,否则它通常会给出相同的答案。省略/ text()可以使查询更短,更健壮。