Thanks Santa for you present!
In lieu of today's (tonight's, depending where you live) discussion
about performance measurement, which is, as you pointed out, far from
trivial, I found the fast startup time of your Gestalt processor
remarkable. Your PE executable (yes, I use Windows) has a startup time
on my system of way below 0.1 seconds. Which compares to Saxon + JVM
which takes about 0.56 seconds to startup.
Yet on larger input it failed (but in all honesty, that "larger input"
processing XSLT was optimized with Saxon in mind), from the earlier
thread, same link on EE:
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/XSLT/Q_22850559.html,
Gestalt proofs roughly 2.8x slower. But I don't think it is fair to
compare a 1.0 version to a 9.0 version and neither is it fair to compare
based on one run with one stylesheet and one input doc, though I believe
it is a very good performance indeed (and about 1600 times faster than
Altova on selected stylesheets (on many Altova doesn't finish at all...)).
Anyway, enough about performance. I noticed a few little things after
running a couple of tests, that you may want to know about:
1. With the experts-exchange stylesheet it makes the uppercase root
tag a lowercase root tag on output (it is an uppercase LRE in the XSLT
source)
2. The fizzbuzz stylesheet (see below) doesn't run at all, though I
believe it is a valid stylesheet. It errors out with:
TODO: {XM_XPATH_TOKEN_ITERATOR}.another needs to be written
Call on Void target!
Unhandled exception
3. I didn't find a way to run a stylesheet with no input document, but
with an initial template. Is this possible in a way?
4. The version number output with --version is "3.7", though the
software is shipped as "1.0". Which should it be?
If you'd like to have more input, I can run a couple of more tests.
Should I post any findings here or do you rather have them on the
Gestalt list?
Thanks again Santa! I now know how to spend the "dark days" ;)
Cheers,
-- Abel Braaksma
PS: the fizzbuzz code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes" />
<xsl:variable name="input">
<fizzbuzz>
<range>1-200</range>
<test>
<mod value="3" test="0">Fizz</mod>
<mod value="5" test="0">Buzz</mod>
</test>
</fizzbuzz>
</xsl:variable>
<xsl:template match="/">
<xsl:apply-templates select="$input/*" />
</xsl:template>
<xsl:template match="fizzbuzz">
<xsl:value-of separator=" "
select="
for $i in range/xs:integer(tokenize(., '\D')[1])
to range/xs:integer(tokenize(., '\D')[last()])
return ((string-join(test/mod[$i mod @value =
@test], ''))[.], $i)[1]" />
</xsl:template>
</xsl:stylesheet>
Colin Adams wrote:
Gestalt 1.0 was supposed to be released on Christmas Day, but Santa
Claus seems to have decided that there was no point in waiting any
longer.
Release notes, documentation, and 32-bit executables for Linux and
Windows NT are available from:
http://sourceforge.net/project/showfiles.php?group_id=124274
Merry Christmas everybody.