2015-07-20 68 views
0

假设你有下列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

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

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