> 1) If I can load all the data into memory, using say a hash table,
> then the initial load time will be somewhat significant but the
> lookups will be near instantaneous.

Really shouldn't be too hard to load the OP's 41,000 very short strings
nearly instantaneously.

> I had a situation where I had about 170,000 unique strings that
> mapped to 170,000 other strings.
> 
> My first implementation used Objective-C++ and a C++ STL map to do
> the lookup (solution 1).   Depending on the machine, it took on the
> order of 2 to 7 seconds of time during the app launch to load the C++
> map.

Seems to me that would be either long strings, or inefficient use of STL.
Did you try to profile it and optimize it? For instance, if you used map<
string, string > the insertions would likely take up all the time in copying
strings, and map< string *, string * > would be an easy optimization. Not
quite so easy (but still not hard) is reading the whole file in one block,
replacing field/record delimiters with null chars, and initializing const
char * pointers into the single block, so you never even copy the strings
once, then you use map< char *, char *, comparefunc >.

Of course OP's "index" strings can all be represented as integers, which
would make the comparisons for inserts faster than string comparisons. In
fact, for 5-digit zip codes it's perfectly possible to just allocate an
array large enough to hold entries for all possible integers in the range 0
through 99,999. No comparisons while reading and building the array, and
just O(1) time to "find" an entry. Of course for 9-digit zip codes, this
wouldn't be such a great idea ;-)

-- 
Scott Ribe
[EMAIL PROTECTED]
http://www.killerbytes.com/
(303) 722-0567 voice


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to