"Michael Kay" <mhk(_at_)mhk(_dot_)me(_dot_)uk> wrote in message
news:001b01c33065$aafbe190$6401a8c0(_at_)pcukmka(_dot_)(_dot_)(_dot_)
One *cannot know* if a program will terminate -- unless this
property has a strict proof.
That's true in general. But there is a large class of stylesheets for
which you can prove termination: anything that only selects downwards
will finish in finite time if given a finite source document.
Yes, definitely.
It's not clear what the OP was asking for, but I don't think he wanted
static analysis, just some kind of instrumentation.
There's tracing in Saxon, including a tool that gives you a trace with
timing information, and a stylesheet for analyzing the trace output.
Unfortunately the timing information you can get from Java is very
coarse-grained, so it's of limited use.
From my observation with Saxon 6.5 I get the stylesheet execution time
reported as at least 120 milliseconds even for the simplest transformations.
Times from other XSLT processors -- MSXML: from a fraction of a millisecond
to 3-5 milliseconds, xsltProc: 10 milliseconds, JD: 50 milliseconds.
But Saxon doesn't seem to perform slower than xsltProc or JD.
It is nice to have built-in tracing and profiling capabilities. On the other
side, using extension functions that read the time may be problematic, as
reading the time is a side effect (e.g. calls to such extension functions
may be rearranged or even eliminated by lazy evaluation and optimization).
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list