[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: csv slows down transform

Subject: RE: csv slows down transform
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 6 Oct 2004 10:47:34 +0100
xsl output csv
Performance questions are always specific to the product. I don't know
libxml so I can only speculate.

One possibility is that it's treating a template rule such as

<xsl:template match="Full_Name">
	<xsl:apply-templates />
</xsl:template>

specially because it recognizes that it's identical to the built-in
template, and adding some text to the output kills this optimization. 

Just a conjecture. 14 seconds to process 2500 records does seem excessive.

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: Jonathan Kart [mailto:jkart@xxxxxxxxxxxx] 
> Sent: 06 October 2004 00:47
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  csv slows down transform
> 
> Hi all,
> 
> I have 2 sample stylesheets to show you.  They are auto-generated, so 
> please forgive the redundancy and other flaws.  My question is, what 
> does the first stylesheet consistently run slower than the 
> second.  For 
> an xml doc of about 2500 'Contacts' this first sheet takes 
> ~14 seconds, 
> the second less than 1 second.  I swear the only difference 
> is that one 
> inserts quotes and commas around the data while the other does not.  
> It's not a trick question i promise.  The time difference is 
> substantial.  We're using the php libxml extension in a web 
> environment 
> under windows 200 server, and iis.
> 
> Thanks for any help, this is boggling my itty-bitty mind.
> 
> SHEET 1
> -----------
> <xsl:stylesheet version="1.0" exclude-result-prefixes="dt" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> xmlns:dt="http://xsltsl.org/date-time">
> 	<xsl:import 
> href="http://www.newdream.org/CMS/lib/xslsl/stdlib.xsl" />
> 	<xsl:output method="xml" />
> 	<xsl:template match="text()">
> 		<xsl:value-of select="." 
> disable-output-escaping="yes" />
> 	</xsl:template>
> 	<xsl:template match="*">
> 		<xsl:copy>
> 			<xsl:apply-templates select="@*" />
> 			<xsl:apply-templates select="node()" />
> 		</xsl:copy>
> 	</xsl:template>
> 	<xsl:template match="@*">
> 		<xsl:copy />
> 	</xsl:template>
> 	<xsl:template match="/">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="//region[@id=\'region93\']">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="assignment[@id=\'assignment\']">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="Contacts">
> 		<xsl:apply-templates select="Full_Name" />
> 		<xsl:apply-templates select="Activity_Points" />
> 		<xsl:text>
> 			&#10;
> 		</xsl:text>
> 	</xsl:template>
> 	<xsl:template match="Full_Name">
> 		&quot;
> 		<xsl:apply-templates />
> 		&quot;,
> 	</xsl:template>
> 	<xsl:template match="Full_Name" mode="Normal">
> 		&quot;
> 		<xsl:apply-templates />
> 		&quot;,
> 	</xsl:template>
> 	<xsl:template match="Activity_Points">
> 		&quot;
> 		<xsl:apply-templates />
> 		&quot;,
> 	</xsl:template>
> 	<xsl:template match="Activity_Points" mode="Normal">
> 		&quot;
> 		<xsl:apply-templates />
> 		&quot;,
> 	</xsl:template>
> </xsl:stylesheet>
> 
> SHEET 2 - same thing, but no &quot; no , and no &#10;
> ------------
> 
> <xsl:stylesheet version="1.0" exclude-result-prefixes="dt" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> xmlns:dt="http://xsltsl.org/date-time">
> 	<xsl:import 
> href="http://www.newdream.org/CMS/lib/xslsl/stdlib.xsl" />
> 	<xsl:output method="xml" />
> 	<xsl:template match="text()">
> 		<xsl:value-of select="." 
> disable-output-escaping="yes" />
> 	</xsl:template>
> 	<xsl:template match="*">
> 		<xsl:copy>
> 			<xsl:apply-templates select="@*" />
> 			<xsl:apply-templates select="node()" />
> 		</xsl:copy>
> 	</xsl:template>
> 	<xsl:template match="@*">
> 		<xsl:copy />
> 	</xsl:template>
> 	<xsl:template match="/">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="//region[@id=\'region93\']">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="assignment[@id=\'assignment\']">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="Contacts">
> 		<xsl:apply-templates select="Full_Name" />
> 		<xsl:apply-templates select="Activity_Points" />
> 	</xsl:template>
> 	<xsl:template match="Full_Name">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="Full_Name" mode="Normal">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="Activity_Points">
> 		<xsl:apply-templates />
> 	</xsl:template>
> 	<xsl:template match="Activity_Points" mode="Normal">
> 		<xsl:apply-templates />
> 	</xsl:template>
> </xsl:stylesheet>

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.