假设您有以下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模式来处理这样的问题?
答案 0 :(得分:1)
优化和性能取决于处理器。对于这种情况,Saxon-HE和Saxon-EE之间的答案甚至会有所不同。如果不知道您使用的处理器,就无法回答这个问题。
但它不太可能成为一种成败优化。如果您遇到性能问题并且怀疑这是原因,那么请尝试不同的编写方法并测量其影响。