2015-07-20 57 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之間的答案甚至會有所不同。如果不知道您使用的是哪個處理器,則無法回答這個問題。

但它不太可能成爲優化或不優化。如果您遇到性能問題,並且您懷疑這是原因,那麼請嘗試使用不同的寫入方式並測量其影響。