A
Andy Dingley
I've just started on a new project and inherited a huge pile of XSLT
(and I use the term "pile" advisedly !) It runs at glacial speed, and
I need to fix this this.
Platform is MSXML 4 / ASP
Any advice on benchmarking tools / techniques ? I have no budget for
tool-building, so if there's anything already out there, that would be
good to know.
Any general advice on performance bottlenecks to avoid ? Particular
areas I'm interested in are:
* xsl:call-template / name vs. xsl:apply-templates / match / mode
* Large stylesheets loaded from several small stylesheets, aggregated
by use of xsl:import
* Many template rules calling each other in chains, where some are
doing little more than being function calls mapping one rule onto
another.
* Widespread string-slicing with substring-before() etc.
I'm also looking at serious automatic compilation of templates. I can
do some specific tuning by hand, but most of these stylesheets are
automatically generated and there are simply too many of them. does
anyone have experience of either auto-merging stylesheets and trying
to auto-compile the various template rules (I think there are many
cases where only one rule of a group will ever be invoked, owing to
simple scoping rules).
Another compilation option would be to "flatten the call stack" where
three or four templates call each other in turn, but do little output
or logic until the very last step.
Any advice gratefully received !
(and I use the term "pile" advisedly !) It runs at glacial speed, and
I need to fix this this.
Platform is MSXML 4 / ASP
Any advice on benchmarking tools / techniques ? I have no budget for
tool-building, so if there's anything already out there, that would be
good to know.
Any general advice on performance bottlenecks to avoid ? Particular
areas I'm interested in are:
* xsl:call-template / name vs. xsl:apply-templates / match / mode
* Large stylesheets loaded from several small stylesheets, aggregated
by use of xsl:import
* Many template rules calling each other in chains, where some are
doing little more than being function calls mapping one rule onto
another.
* Widespread string-slicing with substring-before() etc.
I'm also looking at serious automatic compilation of templates. I can
do some specific tuning by hand, but most of these stylesheets are
automatically generated and there are simply too many of them. does
anyone have experience of either auto-merging stylesheets and trying
to auto-compile the various template rules (I think there are many
cases where only one rule of a group will ever be invoked, owing to
simple scoping rules).
Another compilation option would be to "flatten the call stack" where
three or four templates call each other in turn, but do little output
or logic until the very last step.
Any advice gratefully received !