From nalimilan at club.fr  Fri Feb 10 14:10:19 2012
From: nalimilan at club.fr (Milan Bouchet-Valat)
Date: Fri, 10 Feb 2012 14:10:19 +0100
Subject: [Rd] Creating XML document extremely slow
In-Reply-To: <CAM+LvrA9pWspU2qTMf4dJTbxFZzS9waDLTbHtHU=0GiJYwD4dA@mail.gmail.com>
References: <CAM+LvrA9pWspU2qTMf4dJTbxFZzS9waDLTbHtHU=0GiJYwD4dA@mail.gmail.com>
Message-ID: <1328879419.2325.8.camel@milan>

Le vendredi 10 f?vrier 2012 ? 13:18 +0100, Titus von der Malsburg a
?crit :
> Hi list,
> 
> I'm using the package XML to create a simple XML document.
> Unfortunately constructing the XML tree is extremely slow.  My code
> (see below) adds only about 100 nodes per second on an Intel i5
> machine.  There's clearly something wrong but I don't see what.
> 
> Here's a sample of the XML document:
> 
>   <?xml version="1.0" encoding="utf-8"?>
>   <MarkerSet xmlns="http://www.brainproducts.com/MarkerSet">
>    <SamplingRate>512.032770097286</SamplingRate>
>    <SamplingInterval>1.953</SamplingInterval>
>    <Markers>
>     <Marker>
>      <Type>Stimulus</Type>
>      <Description>prr_156</Description>
>      <Position>397497</Position>
>      <Points>1</Points>
>      <Channel>All</Channel>
>     </Marker>
>     ...
>    </Markers>
>   </MarkerSet>
> 
> There are about 500 very similar marker tags.  Here's the part of the
> code that is particularly slow (x is a character, y is an integer,
> both have a length of about 500):
> 
>   markernode <- xmlNode('Markers')
>   for(i in 1:length(t)){
>     markernode <- addChildren(markernode, xmlNode('Marker',
>              xmlNode('Type', 'Stimulus'), xmlNode('Description', x[i]),
>              xmlNode('Position', y[i]), xmlNode('Points', 1),
>              xmlNode('Channel', 'All')))
>   }
> 
> Looks pretty harmless to me.  Any suggestion about how I can speed
> this up are most welcome!
Just a guess, but I'd try creating all 'Marker' nodes first, storing
them in a 'markers' list, and then calling addChildren(markernode,
kids=markers). Adding nodes one by one is likely to create useless
overhead.

Hope this helps



[Rd] Creating XML document extremely slow
Milan Bouchet-Valat