Subject: Re: [xsl] Here's how to benchmark your XSLT program's execution time From: "Wolfgang Laun wolfgang.laun@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 6 Nov 2014 15:56:22 -0000 |
Yikes, indeed. The number of challenges raised against benchmarking is as long as my arm. And here's my favourite one: Whenever someone tells me that this or that is so and so fast, I pull out my notebook and say, "Hic Rhodus, hic salta." -W On 6 November 2014 16:06, Costello, Roger L. costello@xxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > Order of evaluation is undefined in XSLT, and there is no guarantee > > that $start is evaluated before the apply-templates call is evaluated. > > Yikes! > > So how do I write the XSLT program so that it is guaranteed that $start > will be evaluated before the apply-templates call is evaluated? > > /Roger > > -----Original Message----- > From: Michael Kay mike@xxxxxxxxxxxx [mailto: > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx] > Sent: Thursday, November 06, 2014 9:49 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] Here's how to benchmark your XSLT program's execution > time > > If this is working, then it's only by chance. > > Order of evaluation is undefined in XSLT, and there is no guarantee that > $start is evaluated before the apply-templates call is evaluated. > > I think this only works in Saxon because the optimizer treats calls on > extension functions as suspicious, and tries to avoid over-optimizing them > because of potential side-effects. > > Michael Kay > Saxonica > mike@xxxxxxxxxxxx > +44 (0) 118 946 5893 > > > > > On 6 Nov 2014, at 10:20, Costello, Roger L. costello@xxxxxxxxx < > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > > Hi Folks, > > > > So, you've got an XSLT program that is taking a long time to execute. > You want to find out what part of the program is taking so much time. You > need to insert some start/stop timers into your XSLT. Here's how to do it: > > > > <?xml version="1.0" encoding="UTF-8"?> > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > > xmlns:date="java:java.util.Date" > > version="2.0"> > > > > <xsl:output method="text" /> > > <xsl:output name="text-format" method="text"/> > > > > <xsl:template match="/"> > > <!-- Start a timer --> > > <xsl:variable name="start" select="date:getTime(date:new())" /> > > > > <!-- Do your XSLT processing --> > > <xsl:apply-templates /> > > > > <!-- End the timer --> > > <xsl:variable name="end" select="date:getTime(date:new())" /> > > > > <!-- Log the benchmarking results to a file, time-info.txt --> > > <xsl:result-document href="time-info.txt" format="text-format"> > > start: <xsl:value-of select="$start" /> > > end: <xsl:value-of select="$end" /> > > diff: <xsl:value-of select="$end - $start" /> > > </xsl:result-document> > > > > </xsl:template> > > > > <xsl:template match="*"> > > <!-- Do something --> > > <xsl:text>Hello World </xsl:text> > > <xsl:value-of select="current-dateTime()" /> > > </xsl:template> > > > > </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Here's how to benchmark y, George Bina george@x | Thread | Re: [xsl] Here's how to benchmark y, Eliot Kimber ekimber |
Re: [xsl] Here's how to benchmark y, Michael Kay mike@xxx | Date | Re: [xsl] Here's how to benchmark y, Eliot Kimber ekimber |
Month |