[xsl] why exsl:node-set() is so slow

Subject: [xsl] why exsl:node-set() is so slow
From: David Tolpin <dvd@xxxxxxxxxxxxxx>
Date: Fri, 16 Jan 2004 21:50:55 +0400 (AMT)
Hi,

I wrote a chain of 4 stylesheets; the chain takes an XML file an produces
another one through 4 transformations. It is reasonaly fast, with an XSLT processor
invoked from the command-line for each step (a shell script aids in it).

Recently, I discovered exsl:node-set(), the function that takes the result of
one transformation and converts it to a node set, so that the transformations
can be chained within one invocation of the transformation engine, not stepwise.

I have gladly re-implemented the chain with use exsl:node-set() in hope that
time spent on the slow start-up of Java Machine will be saved. However, all
XSLT engines I have tested  have given me considerable lower performance than
with four invocation, 3 to 5 times slower. What's wrong with exsl:node-set()?

SAXON, for example, takes 150 seconds instead of apprx 50 to process the same
data with calls to exsl:node-set() instead of command-line invocations of the
same processor for each of the four steps. jd.xslt is even slower.

The only notorious exception is xsltrpoc. It is much faster with exsl:node-set()
than without. The only drawback is that xsltproc produces absolutely wrong and
unusable result when exsl:node-set() is employed.

What's wrong with exsl:node-set()? 

David Tolpin
PS: the stylesheets are at http://ftp.davidashen.net/incelim/rng-incelim-1.0.zip

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread