I'd like to share a piece of XSLT with you all. In the distributed report XSLT you 
have the minimum, maximum and average response times. I always like percentiles in my 
reports, mainly because performance requirements usually state something like "90% of 
the pages have to be loaded with 3 seconds". The 90th percentile is the smallest 
number that is greater than 90% of the numbers in a given set.

So just as you have the minTime and maxTime variables in the pagelist template you can 
add the followng variable for the 90th percentile:

<xsl:variable name="thisPercentile">
  <xsl:call-template name="percentiles">
    <xsl:with-param name="responsetimes" select="../[EMAIL PROTECTED] = 
current()/@label]/@time" />
    <xsl:with-param name="percentile" select="0.9" />
  </xsl:call-template>
</xsl:variable>

This is the percentiles "function" which does the math:

<xsl:template name="percentiles">
  <xsl:param name="responsetimes" select="/.." />
  <xsl:param name="percentile" select="." />
  <xsl:variable name="sortedresponsetimes">
    <xsl:for-each select="$responsetimes">
        <xsl:sort data-type="number"/>
        <xsl:element name="time">
          <xsl:value-of select="."/>
        </xsl:element>
    </xsl:for-each>
  </xsl:variable>
  <xsl:variable name="n" select="count($responsetimes)-1" />
  <xsl:variable name="k" select="floor($percentile*$n)+1" />
  <xsl:variable name="f" select="($percentile*$n+1)-$k" />
  <xsl:variable name="a0" select="$sortedresponsetimes[1]/time[$k]" />
  <xsl:variable name="a1" select="$sortedresponsetimes[1]/time[$k+1]" />
  <xsl:value-of select="$a0+ ( $f *( $a1 - $a0))" />
</xsl:template>

The method of sorting the responsetimes can use some improvements: it works, but is 
looks like a hack...

To get this to work with Saxon you have to specificy version 1.1:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.1">


BTW, is there a place where we can share JMeter XSLT's ? I have made a "results to 
CSV"-XSL as well, for those interested.


With regards,
Bob Coret


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to