选择 - 具有多个谓词的性能时

时间:2015-07-20 15:57:26

标签: xml xslt

假设您有以下XSL 1.0

<choose>
    <when test="a = 'test' or b = 'test' or c = 'test'">
        // do work
    </when>
    <when test="d = 'test' or e = 'test' or f = 'test">
        // do work
    </when>
</choose>

<choose>
    <when test="a = 'test'">
        // do work
    </when>
    <when test="b = 'test'">
        // do work
    </when>
    <when test="c = 'test'">
        // do work
    </when>
    etc...
</choose>

显然,我更喜欢谓词字符串,而不是将它们分解为各自独立的元素,以便更加干燥,但我不确定性能影响,因为这个列表可能会变得非常大。 XSL解析器是否创建了一个内部switch-case结构,并基本上将其转换为:

case a:
case b:
case c:
    //do work
break;

在哪种情况下爆炸时元素会过早优化?是否有更好的XSL模式来处理这样的问题?

1 个答案:

答案 0 :(得分:1)

优化和性能取决于处理器。对于这种情况,Saxon-HE和Saxon-EE之间的答案甚至会有所不同。如果不知道您使用的处理器,就无法回答这个问题。

但它不太可能成为一种成败优化。如果您遇到性能问题并且怀疑这是原因,那么请尝试不同的编写方法并测量其影响。