All my modifications are in a single runnable. The text elements i want to
modify are not
children of a single node but are spread out over the document. So its a bit
more complex,
anywayz i will find some way to handle it. 

But there is still the questions that how would doing this reduce the time
spend in setAttribute
etc methods. To me it seems that the problem lies in dom code, where it
creates new nodes
and remove nodes for even simple things like setNodeValue. Just take a look
at the code of
setNodeValue and it appears anything but efficient. 

To me the final solution seems to be to find a way to bypass the dom
somehow.
Any comments. Problem lies with dom code or the way we update document? What
different options
are available?

Thanks
Naveed


Daniel Meyer-2 wrote:
> 
> Hello Naveed
> 
> I don't know how your Document is structured, but if all Text Elements 
> were childnodes of the same node x, you could just unlink this node x 
> update its childnodes and then link back the node x.
> This is the point in unlinking anyway, making multiple modifications in 
> one go.
> 
> Another question, do you perform all your modifications in one single 
> Runnable?
> 
> Daniel
> 
> noni_4444 wrote:
>>> Node parent = textElement.getParentNode();
>>> Node stub = parent.getOwnerDocument().createElement("g");
>>> // unlink element
>>> parent.replaceChild(stub, textElement);
>>> // run your updates
>>> // re link element
>>> stub.getParentNode().replaceChild(textElement, stub);
>> 
>> Trying above code did reduce the CPU usage by 3 to 4% but now replace
>> child
>> becomes a problem by taking up 35% of cpu time. I get an array of
>> textElements and have to iterate over the array in a loop to call
>> (unlink->update->replace) for each text element.  So taking the
>> replaceChild
>> function out of the loop seems impossible. 
>> 
>> Is it possible to take this replaceChild method call out of the loop,
>> when i
>> just receive an array of text elements?
>> 
>> Thanks,
>> Naveed
>> 
>> noni_4444 wrote:
>>> I have a routine where i update several DOM elements inside an update
>>> manager
>>> thread. The problem faced
>>> is that setAttribute and setNodeValue methods take a lot of CPU time.
>>>
>>> An earlier post says:
>>>
>>> "Disconnect the tree from the document before making the changes.  This
>>> avoids the overhead of keeping the GVT tree in synch with every change"
>>>
>>> In my case i am updating the multiple attributes of different Elements
>>> repeatedly. How can i detach the attributes of an element before making
>>> the
>>> changes. 
>>> If i do it, it would mean that i do something like
>>>  
>>> for (1 -> n)
>>> {
>>>  Get current element from array
>>>  Detach attributes of element             //which dom api method to
>>> call????
>>>  Update multiple attributes of this element
>>>  Attach attributes of element             //which dom api method to
>>> call????
>>> }
>>>  
>>> Any pointers, links, references would be helpful.
>>>
>>> Thanks
>>> Naveed
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> 
>> 
>> 
>> 
> 
> -- 
> Mit freundlichen Grüßen,
> Daniel Meyer
> 
> Steinstraße 37, 10119 Berlin
> Deutschland
> Telefon: +49 3031004846
> 
> conTour Software und Design GBR
> 9, rue Kemel, L-9831 Consthum
> Luxemburg
> Inhaber: Christiane Teuschler, Meyer Daniel
> Geschäftsführer: Meyer Daniel
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Help-%21-how-to-make-updates-to-dom-more-efficient---tf4528109.html#a12928448
Sent from the Batik - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to