Useful performance testing example

This commit is contained in:
jez 2009-05-01 19:58:12 +01:00
parent 9d0ac38302
commit 5a42e28743
2 changed files with 136 additions and 0 deletions

40
bin/fractal.xml Normal file
View file

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- XSLT Mandelbrot - written by Joel Yliluoma 2007, http://iki.fi/bisqwit/ -->
<?xml-stylesheet type='text/xsl' href='mandelbrot.xsl'?>
<fractal>
<scale>100</scale>
<y><min>-120</min> <max>120</max> <step>3.9</step></y>
<x><min>-203</min> <max>100</max> <step>1.4</step></x>
<maxiter>28</maxiter>
<background>#500</background>
<magnitude value="0"><symbol>.</symbol><color>#115</color></magnitude>
<magnitude value="1"><symbol>.</symbol><color>#228</color></magnitude>
<magnitude value="2"><symbol>.</symbol><color>#22B</color></magnitude>
<magnitude value="3"><symbol>.</symbol><color>#33D</color></magnitude>
<magnitude value="4"><symbol>.</symbol><color>#44F</color></magnitude>
<magnitude value="5"><symbol>+</symbol><color>#55C</color></magnitude>
<magnitude value="6"><symbol>+</symbol><color>#55D</color></magnitude>
<magnitude value="7"><symbol>+</symbol><color>#55E</color></magnitude>
<magnitude value="8"><symbol>*</symbol><color>#55F</color></magnitude>
<magnitude value="9"><symbol>*</symbol><color>#66F</color></magnitude>
<magnitude value="10"><symbol>*</symbol><color>#77F</color></magnitude>
<magnitude value="11"><symbol>*</symbol><color>#88F</color></magnitude>
<magnitude value="12"><symbol>#</symbol><color>#88F</color></magnitude>
<magnitude value="13"><symbol>*</symbol><color>#99F</color></magnitude>
<magnitude value="14"><symbol>#</symbol><color>#99F</color></magnitude>
<magnitude value="15"><symbol>*</symbol><color>#AAF</color></magnitude>
<magnitude value="16"><symbol>#</symbol><color>#AAF</color></magnitude>
<magnitude value="17"><symbol>*</symbol><color>#BBF</color></magnitude>
<magnitude value="18"><symbol>#</symbol><color>#BBF</color></magnitude>
<magnitude value="19"><symbol>*</symbol><color>#CCF</color></magnitude>
<magnitude value="20"><symbol>#</symbol><color>#CCF</color></magnitude>
<magnitude value="21"><symbol>*</symbol><color>#DDF</color></magnitude>
<magnitude value="22"><symbol>#</symbol><color>#DDF</color></magnitude>
<magnitude value="23"><symbol>*</symbol><color>#EEF</color></magnitude>
<magnitude value="24"><symbol>#</symbol><color>#EEF</color></magnitude>
<magnitude value="25"><symbol>*</symbol><color>#FFF</color></magnitude>
<magnitude value="26"><symbol>#</symbol><color>#FFF</color></magnitude>
<magnitude value="27"><symbol>.</symbol><color>#000</color></magnitude>
</fractal>

96
bin/mandelbrot.xsl Normal file
View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- XSLT Mandelbrot - written by Joel Yliluoma 2007, http://iki.fi/bisqwit/ -->
<xsl:output method="html" indent="no"
doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/REC-html40/strict.dtd"
/>
<xsl:template match="/fractal">
<html>
<head>
<title>XSLT fractal</title>
<style type="text/css">
body { color:#55F; background:#000 }
pre { font-family:monospace; font-size:7px }
pre span { background:<xsl:value-of select="background" /> }
</style>
</head>
<body>
<div style="position:absolute;top:20px;left:20em">
Copyright 1992,2007 Joel Yliluoma
(<a href="http://iki.fi/bisqwit/">http://iki.fi/bisqwit/</a>)
</div>
<h1 style="margin:0px">XSLT fractal</h1>
<pre><xsl:call-template name="bisqwit-mandelbrot" /></pre>
</body>
</html>
</xsl:template>
<xsl:template name="bisqwit-mandelbrot">
<xsl:call-template name="bisqwit-mandelbrot-line">
<xsl:with-param name="y" select="y/min"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="bisqwit-mandelbrot-line">
<xsl:param name="y"/>
<xsl:call-template name="bisqwit-mandelbrot-column">
<xsl:with-param name="x" select="x/min"/>
<xsl:with-param name="y" select="$y"/>
</xsl:call-template>
<xsl:if test="$y &lt; y/max">
<br/>
<xsl:call-template name="bisqwit-mandelbrot-line">
<xsl:with-param name="y" select="$y + y/step"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="bisqwit-mandelbrot-column">
<xsl:param name="x"/>
<xsl:param name="y"/>
<xsl:call-template name="bisqwit-mandelbrot-slot">
<xsl:with-param name="x" select="$x" />
<xsl:with-param name="y" select="$y" />
<xsl:with-param name="zr" select="$x" />
<xsl:with-param name="zi" select="$y" />
</xsl:call-template>
<xsl:if test="$x &lt; x/max">
<xsl:call-template name="bisqwit-mandelbrot-column">
<xsl:with-param name="x" select="$x + x/step"/>
<xsl:with-param name="y" select="$y" />
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="bisqwit-mandelbrot-slot">
<xsl:param name="x"/>
<xsl:param name="y"/>
<xsl:param name="zr"/>
<xsl:param name="zi"/>
<xsl:param name="iter" select="0"/>
<xsl:variable name="zrsqr" select="($zr * $zr)"/>
<xsl:variable name="zisqr" select="($zi * $zi)"/>
<xsl:choose>
<xsl:when test="(4*scale*scale >= $zrsqr + $zisqr) and (maxiter > $iter+1)">
<xsl:call-template name="bisqwit-mandelbrot-slot">
<xsl:with-param name="x" select="$x" />
<xsl:with-param name="y" select="$y" />
<xsl:with-param name="zi" select="(2 * $zr * $zi) div scale + $y" />
<xsl:with-param name="zr" select="($zrsqr - $zisqr) div scale + $x" />
<xsl:with-param name="iter" select="$iter + 1" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="magnitude" select="magnitude[@value=$iter]"/>
<span style="color:{$magnitude/color}">
<xsl:value-of select="$magnitude/symbol"/>
</span>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>