You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Jon Smirl <jo...@mediaone.net> on 2000/07/03 18:50:19 UTC

xalan-c: performance, DOM's the problem

I have my Apache transform module working now. I'm able to synthesize XML
input documents from the database, trransform them to HTML and send them on
to the browser. I'm disapointed in the performance aspect, it's only about
30% faster than my Java version. I was hoping for 5x or better than my Java
version.  So now I'm starting to dig into why, this is just a preliminary
run and may have errors in it, but it gives the general idea.

This is a break down by DLL. My code is the first two.  There is no parsing
going on in this system, all of the stylesheets have been compiled. If's
pretty clear that the problem is the DOM implementation.

Module Statistics for px7test.exe
---------------------------------
    Percent of time in module: 0.1%

Module Statistics for px7.dll
-----------------------------
    Percent of time in module: 3.8%

Module Statistics for xercesplatformsupport.dll
-----------------------------------------------
    Percent of time in module: 0.1%

Module Statistics for platformsupport.dll
-----------------------------------------
    Percent of time in module: 5.6%

Module Statistics for xalandom.dll
----------------------------------
    Percent of time in module: 0.1%

Module Statistics for xercesparserliaison.dll
---------------------------------------------
    Percent of time in module: 46.3%

Module Statistics for domsupport.dll
------------------------------------
    Percent of time in module: 4.0%

Module Statistics for xmlsupport.dll
------------------------------------
    Percent of time in module: 0.3%

Module Statistics for xpath.dll
-------------------------------
    Percent of time in module: 27.7%

Module Statistics for xslt.dll
------------------------------
    Percent of time in module: 11.9%

Top three hot spots in xpath.dll:
SimpleNodeLocator::nodeTest(class XPath const &,class XPathExecutionContext
&,class XalanNode *,int,int,int) (simplenodelocator.obj)
operator delete(void *) (delop_s.obj)
QName::getNamespaceForPrefix(class std::vector<class NameSpace,class
std::allocator<class NameSpace> > const &,class DOMString const &,bool)
(qname.obj)

Everything  is pretty much equally hot in xercesparserliaison.dll.
Top things are getNodeName(), getNodeValue(), mapNode(), getNextSibling()

I left out separately profiling the Xerces DLL the Xerces DLL time is
included in who ever called it. I'll do another run tonight including it.

Jon Smirl
jonsmirl@mediaone.net