Yes, Yes, Yes, a list based component will perform MUCH better than what you have.
If you have been following any of the item renderer posts/answers, you will see that item renderers are tightly integrated with the Flex framework, and are optimized to minimize rendering. The visual elements are re-used, and they make heavy use of the invalidation mechanism to make sure they do only the work really required. This makes them a bit of a pain to code, but the benefit is performance in just this kind of case. Now, do NOT make the item renderer out of a Vbox. You will get noticable benefit from the recycling, but not the most. Instead, make your renderer out of UIComponent. To do this is kind complicated. Copy the ListItemRenderer.as code and start with it as your base and modify it as needed. Look especially at the measure() code. That is what you will use to deal with your variable height subcomponents. It is not trivial, but certainly reasonable. Ok, if you want to do this in steps, to make sure you are getting some benefit, go ahead and make your renderer out of a Vbox, but remember it is only going to give you part of the performance gain. Commit to making the UIComponent the next stage. Tracy ________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Jason Reynolds Sent: Tuesday, September 23, 2008 5:18 PM To: [email protected] Subject: Re: [flexcoders] Speeding up draw time with nested VBoxes Thanks for the response! Yes I need Vbox functionality (unless I want to code the layout on creationComplete, which is my next idea to try -- but I'm sure to run into some caveats with resizing I think). Each component has a textfield with variable textHeight -- so things need to line up appropriately. They are pretty simple -- in the main vbox... each component has a label + textfield(2) + vbox(which contains a graphic + textfield -- again variable height). I did try taking out my html textboxes and graphics, but that did not improve performance at all -- which makes me think it really is the vbox slowing it down. Also it does indeed use scrollbars -- there is no way I can fit this on the screen without vertical scrolling. When you say replace it with a list -- does that really have the potential to perform better if the renderers need all the components mentioned above?? That would be worth trying, but just doesn't seem right. Jason ----- Original Message ----- From: Tracy Spratt <mailto:[EMAIL PROTECTED]> To: [email protected] <mailto:[email protected]> Sent: Tuesday, September 23, 2008 4:00 PM Subject: RE: [flexcoders] Speeding up draw time with nested VBoxes The first question is, do you need Vbox functionality, punk? ;) If so, then you are stuck with it. If you are just using it to lay out static vertical display, then there may be other approaches. Layout containers are very easy to use, but are "heavy" (slow) Next thing is they way you are doing things, you are forcing the Player to render up to (20 * 6) visual objects. They must be pretty simple components, because 3 seconds is pretty good. If they were complex, you would be looking at much longer delay. Does this process produce elements that are not visible, ie scrollbars? If yes, then why would you want to render (make visible) things you can't see? The list-based controls and item renderer mechanisms are designed to minimize rendering of visual objects, which is, and has always been, the player's performance bottleneck. Consider replacing addChild and Vbox with a List and a custom item renderer. Tracy ________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Jason Reynolds Sent: Tuesday, September 23, 2008 4:32 PM To: [email protected] Subject: [flexcoders] Speeding up draw time with nested VBoxes Hi, I have a component that extends VBox. I am making around 20 instances of this component. That component also contains a VBox, each of which contains 2-6 components. This takes a long time from creation to when I can see it on the screen -- around 3000ms. If I don't use a VBox in that 2nd component, it shaves around 700ms off the time. If I take out all my addChild's from the main component that is creating all of this (just creating the components) the total time is around 30ms. Is it the VBox that is hurting my performance by nature? And does anyone have any suggestions to speed it up? This is my first real performance problem since I started using flex. I know it's not the same, but with AS2 I could make 10X more display objects and not see this kind of performance. Any help is appreciated! Jason __________ Information from ESET NOD32 Antivirus, version of virus signature database 3466 (20080923) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com <http://www.eset.com>

