Re: [xsl] How is memory allocated in recursive XSLT templates?

Subject: Re: [xsl] How is memory allocated in recursive XSLT templates?
From: "Rashmi Rubdi" <rashmi.sub@xxxxxxxxx>
Date: Wed, 2 May 2007 19:03:44 -0400
Michael, Abel,

Thank you again for your replies.

Sorry about the delay, it took me a while to try the XSL example and
also a Java example.
I was just trying these out as an academic exercise.

I couldn't calculate the timing precisely in Java because it varied
between each run.

For example Factorial(999) took 0 milliseconds in Java and then the
same Factorial(999) took 16 milliseconds. I put the start time and end
time just before and after the function call.

By using BigInteger in Java I could calculate the factorial of much
larger numbers, larger than Factorial(16) and the largest one was
Factorial(10446) took about 610 milliseconds.

After Factorial(10446) I got a StackOverflowError in Java. Of course
in the case of factorial I was using the normal recursion which relies
on Stacks.

I guess, no expects to work with such high numbers (probably NASA does
:-)  , the largest number shown by BigInteger takes 2 pages

-Regards
Rashmi.

On 5/2/07, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> It could be the memory space available to hold the longest
> number is limited, and not particularly the recursive depth.
> Although I could be wrong, because I know little.

Saxon uses Java's BigInteger. Arithmetic performance will become impossibly
slow long before you hit the size limits on a BigInteger.

Michael Kay
http://www.saxonica.com/

Current Thread