Performance enhancement 1
Added by Anonymous over 17 years ago
Legacy ID: #4393653 Legacy Poster: Serge Emmanuel (spagop)
Hello all xsl gurus, I have many style sheets files, that are either used multiple times or take a long to execute. however we use <xsl:include ..> to include these style sheets and my question: is <xsl:include ..> a performance killer? if yes how or which xsl elements can I use to replace <xsl:include ..>, so that the same functionality can be supported and what about the element <xsl:key>? thanks for advance.
Replies (4)
Please register to reply
RE: Performance enhancement 1 - Added by Anonymous over 17 years ago
Legacy ID: #4396217 Legacy Poster: Michael Kay (mhkay)
xsl:include isn't intrinsically expensive, in the sense that a stylesheet containing 500 template rules will perform the same both at compile time and at run-time whether those rules are all in one module or spread across 50. However, it's also true that xsl:include gives no performance benefit, in particular if a stylesheet module is used from lots of places then it gets separately compiled for each one. But if you've got performance problems, you probably need to look elsewhere. Try the tool described at http://www.saxonica.com/documentation/using-xsl/performanceanalysis.html to see where the time is going.
RE: Performance enhancement 1 - Added by Anonymous over 17 years ago
Legacy ID: #4397053 Legacy Poster: Serge Emmanuel (spagop)
Thanks Micheal for your rapid answer. I am trying to solve these performance problems und one solution should be a stylesheet module, that is used from lots of places to compile once and then to cache the result and thereby each module, that uses this stylesheet module will get them from the cache. But I do not see some examples, that can help me to test this issue. maybe there is already BEST PRACTICES about. If you know some best practices,then that would great if you send me.
RE: Performance enhancement 1 - Added by Anonymous over 17 years ago
Legacy ID: #4397247 Legacy Poster: Michael Kay (mhkay)
Sorry if my reply wasn't clear. I'll try again: (a) you can only compile a stylesheet module as part of a complete stylesheet. If a module is part of several stylesheet then it has to be compiled separately in each one. (b) I think it's unlikely that this is the explanation of your performance problems. What investigation have you done to make you think this? Michael Kay Saxonica
RE: Performance enhancement 1 - Added by Anonymous over 17 years ago
Legacy ID: #4506444 Legacy Poster: dreamair (dreamair)
Hi Michael, I think, I get the xsl:include problem, but is maybe an xsl:import able to reuse prepared stylesheets? Since imported ones are complete stylesheets them selfs and not only part of a compilation. or generally, would the processor be able to cache imported stylesheets? An example setup could include a stylesheet A.xsl importing B.xsl and C.xsl. Both B.xsl and C.xsl import a base.xsl. The processor resolves base.xsl twice. When browsing the source code I find no reuse of stylesheet modules (PreparedStylesheet.loadStylesheetModule()). Why is this not possible? Couldn't we at least cache the memory DOM (includedDoc), so we don't need to parse the Source for base.xsl twice? Thanks, Bruno Feurer FeurerWorks
Please register to reply