I'll worked w/similar components.  One thing that helps is to have each
keypress schedule an autocomplete to take place in the future (e.g. in
100ms), and each keypress resets/restarts the timer.  That way, if the user
knows where they are going, you are not unnecessarily doing processing.

Also, does the Flex client really need to know about that much data?  I
would also consider reducing the the record size if you can.  An
autosuggest should is supposed to help the user, so returning hundreds of
rows that they have to scroll through defeats this.

Can you bust up the data in to a server-filtered dataset, which is further
refined by client-side logic?

For example, require a minimum number of characters to begin an
autocomplete search (e.g. 2+).  That lets your database reduce that 900k to
several thousand (or hundreds of rows?).  Maybe even better, have the db
routine first calculate the number of rows that your search string would
return, and if it exceeds a certain threshold  return 0 rows, w/an
information message: "60427 results pending").

Granted, this shifts a lot of load to the server/db.  I don't know if that
possibile in your scenario.  Also, if you can use AMF instead of XML, you
will cut down on deserialization time.

Once you have the results from an search that is initially filtered by the
server, you can use your existing client-side filterFunction() for further
refinement as additional characters are entered.


On Sun, Mar 31, 2013 at 9:40 AM, Nitin Gopi <nitin.g...@gmail.com> wrote:

> I have a autosuggest library which I have been using in my project. I now
> have a textinput where I have to use this library. But this time the input
> has around 900,000 records. i.e, an xml having 900,000 nodes. When I used
> it with the component, it works but it has become slow probably because of
> filtering of the xmllistcollection on each key press. On each key press it
> takes 2-3 sec for refreshing. Is there a way to speed up the process?
> I tested this xml on the local machine.
>
> --
> You can only depend on yourself. The cavalry ain't coming.
>

Reply via email to