[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Performance Tuning
> > The XSL that I use has three "preceding-sibling::" > > The time taken to parse a 150KB XML in Xalan is 1.9 > > sec and with Saxon8 its 1.6 secs. > > > > Since the above parsing is done frequently in my > > application with different input XMLs. I need to > > further reduce the transformation timing (in > > milliseconds may be). The only bottleneck I see are > > the 3 preceding-sibling. Can we somehow remove them > > or > > use some other logic, to reduce my transformation > > time. Rather than walk the preceding-sibling axis many times, why not perform a single pass in a global variable and then key into that for the positions: So, the top-level variable: <xsl:variable name="parentGroup"> <xsl:for-each select="ParentGroup"> <parentgroup id="generate-id()" pos="position()"/> </xsl:for-each> </xsl:variable> And the key: <xsl:key name="parentGroups" match="ParentGroup" use="@id"/> Then, instead of using count(preceding-sibling::ParentGroup), use: <xsl:value-of select="key('parentGroups', generate-id())/@pos"/> Remember you will need to change the context node to $parentGroup before using the key. If you do this, please post back any changes in performance. cheers andrew
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|