Wow - thanks a million Dan. I changed to using the String(char[],int,int)
constructor instead of String.substring() (and also removed an unnecessary
trim() per line) and the parse time is now 30ms (compared to 400ms)!

The fact the file is still a CSV is perfect because I can more easily
debug/maintain that compared to some encoded format.

On 19 August 2010 17:46, DanH <[email protected]> wrote:

> The trick is to avoid any substringing while parsing.  Read into a
> char array and then use String(char[] value, int offset, int count)
> to construct the individual string, after parsing its bounds.  And you
> can speed that up by also having another file that is a "dope
> vector" (int[]) for the string locations in the char file.
>
> In fact, for some uses you could forgo the construction of the strings
> until they're referenced, using the dope vector.
>
> On Aug 19, 10:01 am, Mark Carter <[email protected]> wrote:
> > I've got a map of about 500 entries. Strings are all very short (less
> > than 5 chars).
> >
> > Its read-only data I want to read once at app-startup.
> >
> > What's the best way to store this so that loading this data is fast?
> >
> > I've tried storing the data in a CSV in res/raw but this takes about
> > 700ms to parse on my N1, so I'm hoping there's a faster way...
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<android-developers%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to