On Sun, 2008-03-30 at 16:00 +0100, Michael Kay wrote:
It was actually 23:00+0800, but my computer didn't know that.
The other thing that would make the optimizer's life much
easier is to
declare the types of parameters such as $grp-size, in this
case using
'as="xs:double"' in the xsl:param declaration.
Is there a document or something that describes best
practices for making the (saxon) optimizer's life easier?
Sadly, no. But I do tell people repeatedly that declaring the types of
parameters is always recommended. Primarily because it's a good way of
catching your programming mistakes, but it also means that the compiler has
more information to work with. In this particular case the use of $grp-size
inside an arithmetic expression inside a predicate caused Saxon to generate
code to atomize the value of the variable and check that it was
single-valued; it was then trying to move this code out of the predicate to
avoid doing it repeatedly. If the type had been declared, then Saxon would
have known that these run-time checks weren't needed and therefore didn't
need to be optimized.
None of which, of course, directly relates to the bug in question.
Michael Kay
http://www.saxonica.com/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--