Altova Mailing List Archives>Archive Index >xsl-list Archive Home >Recent entries >Thread Prev - [xsl] Benefits of using xsl:key >Thread Next - Re: [xsl] Benefits of using xsl:key RE: [xsl] Benefits of using xsl:keyTo: <xsl-list@-----.------------.---> Date: 11/3/2009 9:31:00 AM > > We often hear that the use of xsl:key can speed up a > transformation many times. But XSLT processors seem so > optimized for speed, anyway, these days, that I have found it > difficult to construct a test input file and a test XSLT > stylesheet demonstrating the dramatic wonders of using xsl:key. > > How big should the input document be? > How complicated the hierarchy, etc? > Try this query, which is Q8 from the XQuery XMark benchmark translated into XSLT. <result xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="2.0"> <!-- Q8. List the names of persons and the number of items they bought. (joins person, closed_auction) --> <xsl:for-each select="/site/people/person"> <xsl:variable name="a" select="/site/closed_auctions/closed_auction[buyer/@person = current()/@id]"/> <item person="{name}"><xsl:value-of select="count($a)"/></item> </xsl:for-each> </result> Run it against different sizes of database from the XMark benchmark. Observe how with Saxon-HE the performance increases quadradically with database size, while with Saxon-EE the increase is linear. That's because Saxon-EE creates a key automatically. Then show how you can achieve the same effect with Saxon-HE by hand-optimizing using xsl:key: introduce <xsl:key name="k" match="/site/closed_auctions/closed_auction" use="buyer/@person"/> and change the variable initializer to select="key('k', @id)" Regards, Michael Kay http://www.saxonica.com/ http://twitter.com/michaelhkay --~------------------------------------------------------------------ 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@l...> --~-- | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
