Hi,

I am not sure about your context, so take it as a grain of salt.

Another way to improve performance is by:
- whenever possible, group the things that need to be changed
- when you want to update
* detach that group from the DOM aka rendering tree
* do your update (add new element, sub node, modify existing)
* attach the group back
* re render the DOM

So the rendering is only done 1 or 2 times only
- detaching
- attaching
where as the modifiying part does not affects the rendering

Cheers
Tonny Kohar
-- 
Citra FX Photo Effects
imagine, design, create ...
http://www.kiyut.com


On Wed, Sep 17, 2008 at 3:44 PM, Julien Beghin <[EMAIL PROTECTED]> wrote:
> Hello,
>
> First, thanks to Andreas Neumann for his first advices about my problem.
>
> I am working on a Java application which is using a JSVGCanvas to display
> some business informations.
>
> Still in the business part of my application, I may need to perform an
> update on a list of text elements in my canvas.
> The texts elements are Id and when I remove the object corresponding to the
> text, I have to rename the other java objects and their corresponding text
> in the canvas.
> This represent from 50 to 100 elements that can need to be updated.
>
> Everything works fine but it tooks real long time to update the complete
> list.
>
> At first, I was using a function to create my elements :
>
>     private Element getElementFromText(....) {
>         // We create the text element
>         Element
> textGroup=svgDom.createElementNS(SVGConstants.SVG_NAMESPACE_URI,SVGConstants.SVG_TEXT_TAG);
>
>         // We define its attributes
>         ...
>
>         ...
>         Node numTextNode = svgDom.createTextNode(displayNum + " ");
>         Node statusTextNode = svgDom.createTextNode(displayText);
>
>         textGroup.appendChild(numTextNode);
>         textGroup.appendChild(statusTextNode);
>
>         MapActionIdToSVGElements.put(id, numTextNode);
>
>         return textGroup;
>     }
>
>
> I also added a Map to wrap Id with corresponding Elements in my svgDoc. This
> will avoid several getChild operations
>
> This method allows me to create my svg content :
>
>     <text style="text-anchor: middle; font-size: 3.3; fill: rgb(0,200,0)"
> id="TMTEXT2" transform="translate(0,11.0) scale(1,-1)">
>         0 F
>     </text>
>
>
> And now I can show you how i update this :
>
>
> The first method is called and just read the map and call a second function
> which update a single element
>
>     private void updateActionsLabel() {
>         Set<Integer> s = MapActionIdToSVGElements.keySet();
>         for(Integer i : s){
>             modifyActionNumberInSVGDoc(i,"a");
>         }
>     }
>
>     private boolean modifyActionNumberInSVGDoc(int id, String displayNum)
>     {
>
>  LogManager.getLogManager().log("TMCoreAdaptor>modifyActionNumberInSVGDoc",
> "call", null, LogLevel.DEBUG);
>         Node n = MapActionIdToSVGElements.get(id);
>         n.setNodeValue("0 ");
>         return true;
>     }
>
> I also added some "simple" timer (removed for this post) to get more info.
> Here are the results
> Updating action labels
>  ->  Updating action label 1 (0 ms)
>  ->  Updating action label 2 (94 ms)
>  ->  Updating action label 3 (78 ms)
>  ->  Updating action label 4 (109 ms)
>  ->  Updating action label 5 (79 ms)
> ...
>  ->  Updating action label 8 (78 ms)
>  ->  Updating action label 9 (438 ms)
>  ->  Updating action label 10 (78 ms)
> ...
>  ->  Updating action label 29 (79 ms)
>  ->  Updating action label 28 (78 ms)
>  ->  Updating action label 30 (625 ms)
> ...
>  ->  Updating action label 52 (78 ms)
> Update time 4813 ms
>
>
> As you can see, there are very long update like #30 with 625ms and the first
> one is at 0ms....
>
>
>
> I am new to Batik and i must have done something wrong ( I hope that is the
> problem... ). I also hope, someone will
> figure out what is happening there.
> I also tried some other things like :
> - suspending the redraw ( same time for execution)
> - setting documentstate to static ( better, but i have no refresh)
> - removing listeners / adapters (no effect)
>
> Thanks in advance for your help
> Julien Beghin
>
> ________________________________
> Souhaitez vous  « être au bureau sans y être » ? Oui je le veux !

Reply via email to