[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] performance with template and choose
I have a transformation that takes roughly 2.8 sec to run (using MSXML). I made some changes to it, moving some of the template matches into a choose within a broader template. This change was made for functional reasons, but it cut the transformation time down to 1.4 sec. I was just curious if someone could shed light on why there was the performance improvement. Sample differences: slower version was structured as - <xsl:template match="KH[@Type='401']/Key[@ProdID ='83' and translate(@StopVal, '-','') <='20050911']/MD[@ACPID='100']/@AAvl" priority="1001" > <xsl:attribute name="AAvl">1</xsl:attribute> </xsl:template> <xsl:template match="KH[@Type='401']/Key[@ProdID ='83' and translate(@StopVal, '-','') <='20050911']/MD[@BCPID='100']/@BAvl" priority="1002" > <xsl:attribute name="BAvl">1</xsl:attribute> </xsl:template> <xsl:template match="KH[@Type='401']/Key[@ProdID ='83' and translate(@StopVal, '-','') <='20030911']/MD[@ACPID='10']/@AAvl" priority="1003" > <xsl:attribute name="AAvl">1</xsl:attribute> </xsl:template> <xsl:template match="KH[@Type='401']/Key[@ProdID ='83' and translate(@StopVal, '-','') <='20030911']/MD[@BCPID='10']/@BAvl" priority="1004" > <xsl:attribute name="BAvl">1</xsl:attribute> </xsl:template> <xsl:template match="KH[@Type='401']/Key[@ProdID ='83' and translate(@StopVal, '-','') <='20030311']/MD[@ACPID='3']/@AAvl" priority="1005" > <xsl:attribute name="AAvl">1</xsl:attribute> </xsl:template> <xsl:template match="KH[@Type='401']/Key[@ProdID ='83' and translate(@StopVal, '-','') <='20030311']/MD[@BCPID='3']/@BAvl" priority="1006" > <xsl:attribute name="BAvl">1</xsl:attribute> </xsl:template> faster version as - <xsl:template match="KH/Key[@ProdID ='83']/MD/@AAvl" priority="1001"> <xsl:attribute name="AAvl"> <xsl:choose> <xsl:when test="translate(ancestor::Key/@StopVal, '-','') <='20030311' and (parent::MD/@ACPID='3')">1</xsl:when> <xsl:when test="translate(ancestor::Key/@StopVal, '-','') <='20030911' and (parent::MD/@ACPID='10')">1</xsl:when> <xsl:when test="translate(ancestor::Key/@StopVal, '-','') <='20050911' and (parent::MD/@ACPID='100')">1</xsl:when> </xsl:choose> </xsl:attribute> </xsl:template> <xsl:template match="KH/Key[@ProdID ='83']/MD/@BAvl" priority="1001"> <xsl:attribute name="BAvl"> <xsl:choose> <xsl:when test="translate(ancestor::Key/@StopVal, '-','') <='20030311' and (parent::MD/@BCPID='3')">1</xsl:when> <xsl:when test="translate(ancestor::Key/@StopVal, '-','') <='20030911' and (parent::MD/@BCPID='10')">1</xsl:when> <xsl:when test="translate(ancestor::Key/@StopVal, '-','') <='20050911' and (parent::MD/@BCPID='100')">1</xsl:when> </xsl:choose> </xsl:attribute> </xsl:template> All other things (other named templates and unrelated template matches) in the XSL documents were unchanged. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|