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 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel