I’m using a JQuery plugin (http://docs.jquery.com/Plugins/Autocomplete) to add auto-completion to a “city” textfield. The component calls an ASP.NET page that simply loads an array of all possible city values (>8000) and then iterates that array returning those that start with the text the user has so far entered.
The thing is, it’s pretty slow in real use. It lags behind what the user types to the extent that most of the time the user probably won’t notice that it’s there.
So, my question is, how can I speed it up?
I had thought that an array would be a better way to go than putting the data in a database and having to hit that multiple times. Do others agree that having this information hard-coded is the way to go given that it’s not at all volatile and needs to be all about speed of return?
If so, what would you look at to improve the speed of performance? Should I be caching the data on application start and accessing it from memory? Would I be better off instead with multiple arrays, each containing values starting with a particular letter so I can go straight to the relevant one and thus iterate a much smaller array? Or am I missing a much more obvious way to go about this?
Thanks in advance.
The code you posted looks pretty normal and should return fast. My guess would be that you’re using the default “delay” value for the plug-in which is 400ms. Try changing it to something lower like 100ms (or even lower) and see if it feels better: