xsl-list
[Top] [All Lists]

Re: [xsl] Will Saxon 9 optimize or cache this so performance doesn't degrade?

2013-02-05 03:31:33
With optimization, it all depends....

You won't get any indexing optimizations. Those are done only for equality predicates, not for contains().

If $map is a global variable, then Saxon-EE will recognize this as an expression that depends only on global variables, and turn it into a global variable itself. Or at least it will if you remove the requirement to create a new copy of the nodes each time it's evaluated: change it to

<xsl:variable name="topicChapters" select="$map//*[contains(@class, ' 
bookmap/chapter ')]
              union $map//*[contains(@class, ' bookmap/appendix ')]
              union $map//*[contains(@class, ' bookmap/preface ')]"/>


unless for some reason you really want a fresh copy to be made each time.

But if $map is local, no such luck. Your best bet then would be to turn it into a memo function.

Michael Kay
Saxonica


On 05/02/2013 01:43, Steve Fogel wrote:
Hi, all...

I've got a PDF customization template that gets called maybe a couple of dozen
times during the processing of a DITA bookmap. It has the following code in it:

       &lt;xsl:variable name="topicChapters">
           &lt;xsl:copy-of select="$map//*[contains(@class, ' bookmap/chapter 
')]
               union $map//*[contains(@class, ' bookmap/appendix ')]
               union $map//*[contains(@class, ' bookmap/preface ')]"/>
       &lt;/xsl:variable>

This code will have to scan a good deal of the XML tree document represents the 
book. The
document will not change between each execution of the template.

Will Saxon optimize/cache this and not calculate it each time? I can always set
this variable in a parent template (that executes only once) and pass it into
this one. For readability however, it makes more sense to have this variable
where it is.

Thanks

Steve




Steve Fogel | Information Architect, Oracle Database | 650.506.4914
Oracle Server Technologies Information Development
500 Oracle Parkway | M/S 4op1126 | Redwood Shores, CA 94065


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>