GWT Treemap - Scalability

62 views
Skip to first unread message

Fabien Hermenier

unread,
Jul 8, 2011, 10:08:52 PM7/8/11
to cho...@googlegroups.com
Hi there

I start to insert my own datas instead of the datas provided in Treemap2 and I observe a huge slowdown when the number of children increases.
So, I came back to the original example and just add new datas (see above). This these datas, highlighting the active child on mouseover take at least one second (I am running the code in development mode).

---
private static MyDataClass data() {
        return new MyDataClass("flare", new MyDataClass("analytics",
                new MyDataClass("cluster", new MyDataClass(
                        "AgglomerativeCluster", 3938, "my additional text"),
                        new MyDataClass("CommunityStructure", 3812),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714),
                        new MyDataClass("HierarchicalCluster", 6714)
                ),
                new MyDataClass("ISchedulable", 1041, "my additional text"),
                new MyDataClass("ISchedulable", 1041, "my additional text"),
                new MyDataClass("ISchedulable", 1041, "my additional text"),
                new MyDataClass("ISchedulable", 1041, "my additional text"),
                new MyDataClass("ISchedulable", 1041, "my additional text"),
                new MyDataClass("ISchedulable", 1041, "my additional text"),
                new MyDataClass("Parallel", 5176, "other additional text"),
                new MyDataClass("Parallel", 5176, "other additional text"),
                new MyDataClass("Parallel", 5176, "other additional text"),
                new MyDataClass("Parallel", 5176, "other additional text"),
                new MyDataClass("Parallel", 5176, "other additional text"),
                new MyDataClass("Parallel", 5176, "other additional text"),
                new MyDataClass("Parallel", 5176, "other additional text"),
                new MyDataClass("Parallel", 5176, "other additional text"),
                new MyDataClass("Pause", 449), new MyDataClass("Scheduler",
                        5593), new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),new MyDataClass("Sequence", 5534),new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Sequence", 5534),
                new MyDataClass("Tween", 6006)));
    }
---

Lars Grammel

unread,
Jul 10, 2011, 3:01:37 PM7/10/11
to Choosel
Hi Fabien,

How much data do you want to put into the treemap?

Also, are you using the GWT hosted mode or the compiled JavaScript
version? The hosted mode can be very slow when you are working with a
lot of data, but this is not the case for the compiled JavaScript
version.

Cheers,

Lars

Fabien Hermenier

unread,
Jul 10, 2011, 3:12:33 PM7/10/11
to cho...@googlegroups.com
Hi Lars
I was working in the hosted mode and as you said, it cause the execution to be very slow. Once deployed on Tomcat, things getting better for this dataset. So beginner mistakes from a beginner;)

With big dataset, the responsiveness problem appears again. I want to use the treemap on a dataset composed of 10,000+ elements, with a depth of 5 or 6 at most. Currently, the problem seems to be caused by the event that highlight the left pointed by the mouse. After profiling, most of the time is used by the rendering process when an element has to be rendered. Is there an event by leaf ? When the method "_this.render()" is called, is the whole treemap rendered or only the pointed leaf ?


Fabien

Lars Grammel

unread,
Jul 10, 2011, 3:37:37 PM7/10/11
to cho...@googlegroups.com
10k+ elements might cause problems with the Protovis rendering
performance. You can optimize the performance by just rendering what
needs to be updated (instead of the whole visualization - call render
on those elements). I think _this.render() renders all the leafs,
however, I am not sure because this is handled by Protovis. The
semantic zooming & limits mentioned in the other mail might also help,
because this reduces the number of SVG elements.

Hope that helps,

Lars

> --
> You received this message because you are subscribed to the Google Groups
> "Choosel" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/choosel/-/VLp8Z-zxxTMJ.
> To post to this group, send email to cho...@googlegroups.com.
> To unsubscribe from this group, send email to
> choosel+u...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/choosel?hl=en.
>

--
Lars Grammel
PhD Candidate, The CHISEL Group, University of Victoria
http://larsgrammel.de
http://twitter.com/lgrammel

Fabien Hermenier

unread,
Jul 10, 2011, 3:48:50 PM7/10/11
to cho...@googlegroups.com
Thanks for your response.
If _this.render() actually renders all the leafs, it explains my
problem. I will go deeper into protovis and the GWT wrapper to check if
I can easily render only the elements I want.


Le 10/07/11 13:37, Lars Grammel a �crit :


> 10k+ elements might cause problems with the Protovis rendering
> performance. You can optimize the performance by just rendering what
> needs to be updated (instead of the whole visualization - call render
> on those elements). I think _this.render() renders all the leafs,
> however, I am not sure because this is handled by Protovis. The

> semantic zooming& limits mentioned in the other mail might also help,


--
postdoctoral researcher at Flux
School of Computing, University of Utah
http://sites.google.com/site/hermenierfabien/home

Reply all
Reply to author
Forward
0 new messages