If you are using ComboBoxes, Another trick you may want to consider is using a custom renderer (not ComboBox) based on UIComponent that shows the current data value + an editable indicator of some kind. Then use the ComboBox only as the ItemEditor. I believe this will avoid the overhead of the ComboBox until the user actually wants to edit that cell.

hth
Scott

Alex Harui wrote:

If your resultFormat is Object, I'm pretty sure all of the XML has to be parsed into objects before the busy cursor goes away and the result handler fires. I would expect noticeably faster response if the resultFormat is e4x.

But as Scott has found out, memory utilization of XML collections is much higher than objects in ArrayCollection. I spent a week studying the issue and we've made some improvements in Moxie, but it XML will always take more memory and fetching properties out of XML is measurably slower than fetching properties out of objects. Thus, you have to trade-off how much XML data you're getting, the time to convert it to objects and the time you'd spend accessing it if you didn't convert it.

I don't know if anyone has created a background task that will convert XML to objects, but I've been thinking about doing that one of these days. That would allow you to show more than a busy cursor, but will delay the total time until you see the data in the views, so there will be another trade-off. Another twist would be a custom collection that converts the XML to objects as they are fetched from the collection.

You should see the busy cursor "freeze" the moment it tries to do the xml conversion to object. Then it should go away and there will be another pause while the DG builds the renderers. If you've got lots of comboboxes, you'll definitely feel it. A quick way to compare it to sub-out the comboboxes for the default renderer and see if you can tell the difference.

I'll put in trace statements and call getTimer() in "enterFrame" events as way to measure where your time is going. The Moxie beta due out next week has some profiling capability that will help you too, but optimizing DG performance will have the biggest payoff.

------------------------------------------------------------------------

*From:* [email protected] [mailto:[EMAIL PROTECTED] *On Behalf Of *j_lentzz
*Sent:* Friday, September 28, 2007 6:54 PM
*To:* [email protected]
*Subject:* [flexcoders] Re: HTTPService Performance Issue - very slow

Yes, I am using a result handler. The timers I've used have timed
from when the result handler gets called until the time I finish
processing all the data and then let the Flex stuff do its thing.
This time is very small and I can't start timing any sooner than the
result handler. I'm sure using extended components vs the heavy
combobox would help, but I'm confused about why the busy cursor is
staying on so long. Once it goes away, the complete screen draws
nearly instantly. Is there anything to be done to speed the
processing of the incoming data until the result handler is called?

Thanks a bunch,

John

--- In [email protected] <mailto:flexcoders%40yahoogroups.com>, Scott - FastLane <[EMAIL PROTECTED]> wrote:
>
> oops... sorry about the prior message. Doh!
>
> It has also been my experience that rendering is usually the
> bottleneck. See this post on my blog
<http://blog.fastlanesw.com/?p=25 <http://blog.fastlanesw.com/?p=25>>
> for an example of the difference a UIComponent based renderer can make
> over containers.
>
> hth
> Scott
>
> Tracy Spratt wrote:
> >
> > In my experience, the rendering of the UI is the bottleneck, not the
> > data transfer.
> >
> >
> >
> > Use timer and the result handler function to time the actual data
> > transfer. You ARE using a result handler, and not binding
directly to
> > lastResult, right?
> >
> >
> >
> > Are your item renderers built on containers? If so, you need to move
> > to extending UIComponent instead. See Alex Harui's blog for a full
> > explanation why, and for many examples.
> >
> >
> >
> > Tracy
> >
> >
> >
> >
----------------------------------------------------------
> >
> > *From:* [email protected] <mailto:flexcoders%40yahoogroups.com>
[mailto:[email protected] <mailto:flexcoders%40yahoogroups.com>]
> > *On Behalf Of *j_lentzz
> > *Sent:* Friday, September 28, 2007 2:11 PM
> > *To:* [email protected] <mailto:flexcoders%40yahoogroups.com>
> > *Subject:* [flexcoders] HTTPService Performance Issue - very slow
> >
> >
> >
> > Hi,
> >
> > I've got an app getting data from a server to populate a screen with
> > 3, text inputs, some radio buttons and a data grid. With some data,
> > it is taking almost a minute to save and refresh the scren. The data
> > grid seems to be the issue. It contains many comboboxes. I've read
> > that these are very slow if too many appear in a datagrid. I see the
> > last data leave the server and I have timer marks for when I start my
> > processing of the returned data (populating the arraycollection for
> > the datagrid - I'm using the default resultFormat of Object) to when
> > I'm done and just waiting on the screen to display it. The processing
> > time I'm getting from the timers is very low (1/2 sec or less).
> > However, I'm seeing the busy cursor staying on the screen for almost
> > the complete time I'm waiting. Once the busy cursor leaves, the
> > screen appears almost instantly with data. The docs say that the busy
> > cursor is displayed until the class completes loading data. So is the
> > bottleneck on the Flex side (the loading of the data from the
> > HTTPService) that I can't access? Or is my datagrid full of
> > comboboxes the issue, even though the busy cursor is staying on the
> > screen.
> >
> > Any guidance would be appreciated.
> >
> > Thanks,
> >
> > John
> >
> >
>


Reply via email to