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 17:09:56 -0000 |
On 6 November 2014 17:38, Eliot Kimber ekimber@xxxxxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > In my test I followed the xsl:variable instruction by an immediate > xsl:message with a reference to the variable to ensure it was evaluated > right then. > ...and that this xsl:message's duration is added to $end-$start. (Yes, you can try to cook this, too.) -W > > Cheers, > > E. > ---------- > Eliot Kimber, Owner > Contrext, LLC > http://contrext.com > > > > > On 11/6/14, 8:49 AM, "Michael Kay mike@xxxxxxxxxxxx" > <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > >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, Eliot Kimber ekimber | Thread | Re: [xsl] Here's how to benchmark y, Dimitre Novatchev dn |
Re: [xsl] Here's how to benchmark y, Eliot Kimber ekimber | Date | Re: [xsl] Here's how to benchmark y, Wolfgang Laun wolfga |
Month |