[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: DOM or SAX input faster/more efficient?

Subject: RE: DOM or SAX input faster/more efficient?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 30 May 2005 10:01:47 +0100
dom sax which faster
It depends very much on what the transformation is actually doing. Firstly,
a JDOM tree will occupy more memory than one built by Saxon: my guess is
that an element node in JDOM will take about 60 bytes compared with 20 in
the Saxon tinytree. Secondly, some operations will be more expensive.
Testing whether an element matches a simple name test will involve two
string comparisons, rather than a single integer comparison. Sorting nodes
into document order is likely to be much slower in JDOM than with the Saxon
tree, because comparing the position of two nodes involves searching upwards
to find a common ancestor and then searching siblings - in a flat document
where the outermost element contains 20000 children the difference will be
dramatic. However, the devil's in the detail: Saxon will sometimes be able
to avoid these costs depending on the exact access paths used in the
stylesheet.

The only real answer I can give is: measure it.

By the way, I would expect JDOM to be more efficient than DOM, but again you
would have to measure it to be sure.

For simple transformations the cost of building the tree often dominates the
cost of the transformation, so if you already have a tree, it's probably
better to supply that rather than letting Saxon rebuild it. For more complex
transformations this may not be the best strategy.

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

> -----Original Message-----
> From: Andrzej Jan Taramina [mailto:andrzej@xxxxxxxxxxx] 
> Sent: 30 May 2005 02:38
> To: mike@xxxxxxxxxxxx
> Cc: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: DOM or SAX input faster/more efficient?
> 
> Michael:
> 
> > If the input comes from source XML, let the XSLT processor 
> build the tree
> > (i.e., supply a SAX or Stream source) rather than doing the 
> job yourself. The
> > XSLT processor will usually be able to build a far more 
> efficient internal
> > tree structure. Only supply a DOM source if your 
> application is constructing
> > the source tree programmatically (and even then, use SAX if 
> you can).
> 
> Any rough idea on how much more efficient it might be to 
> supply SAX events 
> rather than a DOM tree as input to XSLT?  Is it 10%...50%, an 
> order or 
> magnitude?  
> 
> Just trying to get a feel for what the performance difference 
> might be.
> 
> Currently, we're passing in a JDOM document.  It's pretty 
> easy to build that 
> since it's used in the presentation layer of a large system, 
> using STXX 
> (Struts interface for XSLT), where the beans/data returned by the 
> business/services tier are serialized into the JDOM document. 
>  Doesn't look 
> like there is much overhead in producing the JDOM document 
> from the beans, so 
> the real difference, if any, will be in how efficient XSLT is 
> with JDOM 
> versus SAX inputs.
> 
> Thanks!
> 
> 
> Andrzej Jan Taramina
> Chaeron Corporation: Enterprise System Solutions
> http://www.chaeron.com

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.