RE: [xsl] Writing to file vs. storing in a variable

Subject: RE: [xsl] Writing to file vs. storing in a variable
From: mjyoungblut@xxxxxxx
Date: Wed, 24 Oct 2001 11:51:26 -0500
In both of my test cases, I write out the file as an end result.  Here are
my steps again:
Approach 1(faster, more memory)
1. Compare the two files and store the results in a variable
2. Use the variable to create a header in output File A
3. Write the contents of the variable to output File A

Approach 2(slower, less memory)
1. Compare the two files, writing the results immediately to File A
2. Read up File A(much smaller than the originals), writing the header to
File B
3. Copy the contents of  File A to File B

In my two tests(using Instant Saxon), I run the first approach completely,
and I run only the first step of the second approach.

One thing that I didn't mention in my first email was that as part of step
2 in Approach 1, I get rid of all empty elements and all ancestors of empty
elements.  In my Approach 2, I would do this in step 2.  Thus, the output
files after step 1 in both approaches will be different in size(Approach 1
is smaller, but not dramatically.  Approach 2 results in about 3% of the
original files).

Here is what I am seeing in my mind:
- Both files use ~ same memory to read up and parse the files
- Transform occurs.  Approach 1 saves as a variable, so the memory
difference occurs here.  Approach 2 writes directly to a file.
- Approach 1 finally writes to a file with less data than Approach 2.

I don't see that extra data as a result of Approach 2, step 1 making the
time consumption being 50% longer.

Any thoughts on this?

Thanks,
     Matt

> The problem is that the first part of the second approach
> takes about 50%
> LONGER than all of the steps in the first approach.  I have
> tried using
> Saxon and Xalan, and they are pretty equivalent(other than
> Xalan being a
> big memory hog).
>
> Can anybody explain to me why this would be the case?
>
Serialization and parsing are expensive. Instead of using a file as the
intermediate form between two transformations, connect the two
transformations end-to-end as a SAX pipeline, so the nodes produced by the
first are fed straight into the second. Look at the SAXTransformerFactory
class in JAXP.

Mike Kay


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread