[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [xml] Performance of DOM interface



On Mon, Aug 26, 2002 at 01:44:51PM +0200, wellnhofer aevum de wrote:
hi nick,
hi list,

> Matt Sergeant wrote:
> >On Saturday, August 24, 2002, at 07:12 PM, Nick Wellnhofer wrote:
> >>Daniel Veillard wrote:
> >>>On Sat, Aug 24, 2002 at 03:13:08PM +0200, wellnhofer aevum de wrote:

<SNIP/>
> >>>>I'm using libxml and libxslt with Perl to generate dynamic HTML 
> >>>>pages and did some performance testing recently. I created a XML 
> >>>>tree from a Perl data structure using the DOM interface and 
> >>>>transform that tree with XSLT.
<SNIP/>

> >Yeah, it's all the method calls, and also the memory allocation and the 
> >reference counting that the Perl level API has to do, but the C one 
> >doesn't. It *might* be quicker to do it in perl-space and create an XML 
> >string and then parse it.
> 
> I just replaced the following Perl code to create a XML element 
> containing only text
> 
>       my $child = $doc->createElement($k);
>       $node->appendChild($child);
>       my $text = $doc->createTextNode($v);
>       $child->appendChild($text);
> 
> with the equivalent
> 
>       $node->appendTextChild($k, $v);
> 
> Building the DOM tree is now two times faster, but still a little slower 
> than the XSLT transformation.

a major diffrerence between libxml2 and its Perl interface is the fact, that 
in C you can leave the memory management to a user while you can't in perl.
thus the module has to do all management itself.

through this you will loose a lot performance while the modules does not
cause memory leaks. there are still some obvious issues that slow XML::LibXML 
down a 'bit'.

i tried to add some functions to avoid some perl overhead during DOM building,
such as appendTextChild(), which is the reason why this significantly speeds 
the processing up.

christian glahn

> 
> Nick Wellnhofer
> 
> _______________________________________________
> xml mailing list, project page  http://xmlsoft.org/
> xml gnome org
> http://mail.gnome.org/mailman/listinfo/xml
> 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]