Exactly what I was thinking last night. I did this this morning -- split up the file into 26 files. Now everything is great. Thanks everyone!
On Thu, Apr 16, 2009 at 11:16 PM, Greg Guerin <glgue...@amug.org> wrote: > Miles wrote: > > I'm creating a game for where the dictionary file will never get modified, >> so I'm not really worried about that. >> > > I was pretty sure the dictionary was read-only, but that doesn't mean it's > always error-free. I was actually thinking of production errors, where the > dictionary file accidentally has its final null lost or removed. > > Such things have been known to happen, and from small errors grave disorder > follows unless you code defensively. Sometimes a good design isn't just > defending against user mistakes, it's also defending against your own > mistakes. > > > Yes, the original suggestion to use strstr(). >> > > > Not strnstr? > > http://lists.apple.com/archives/cocoa-dev/2009/Apr/msg01221.html > > > It is slow, for a word that's >> never found it takes 0.704 seconds on the device. Definitely too long. >> > > > So what do you think would be fast enough. For example, if it were twice > as fast, would that suffice? 10 times faster? 100 times? Remember, it > doesn't have to be As Fast As Possible. It only has to be Fast Enough. > > Next, think about the minimum work needed to achieve the desired speedup. > Given a search function and a dictionary, what is the simplest way to make > that search function finish in half the time? > > The first thing that comes to mind for me is to cut the dictionary in half. > Boom, the same search function now finishes in half the time. Or cut the > dictionary to 1/10 its original size, and the same search function finishes > in 1/10 the time. Or 1/100. Or whatever. > > Now think about multi-volume encyclopedias, the physical book kind. > > http://en.wikipedia.org/wiki/File:Brockhaus_Lexikon.jpg > > It's impossible to make a single book large enough to hold all the content, > because physical books have physical limits. Instead, the material is > broken into equal-sized sections purely for physical convenience, and that > section is put into a single book or volume. Within each volume, the > content is ordered alphabetically. On the spine of each volume is a short > label idnetifying the range it covers, such as a single letter of the > alphabet, or portions of the first and last item-names in that volume. If > there were only one label on a volume's spine, it should be the first item > in a volume, because you can just look at the first item of the next volume > to deduce the last possible item in the current volume. > > Finally, consider the steps needed to search the entire encyclopedia for a > single given term. The first step is to identify which volume to use, by > looking at the spine labels, then you open only one volume and search it for > the term of interest. You gain enormous speed by simply eliminating most of > the material, without ever having to open those volumes or even take them > off the bookshelf. > > http://en.wikipedia.org/wiki/Encyclopedia > > > NSString *filePath = [[NSBundle mainBundle] >> pathForResource: @"dictionary" >> ofType: @"txt"]; >> >> stringFileContents = [[NSData alloc] >> initWithContentsOfMappedFile:filePath]; >> > > > Does stringFileContents have a null-terminator or not? If not, then > re-read what the arguments to strstr() need to be. Does [stringFileContents > bytes] provide data in the format strstr() needs to work correctly? Small > errors; grave disorder. > > -- GG > > _______________________________________________ > > 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/vardpenguin%40gmail.com > > This email sent to vardpeng...@gmail.com > _______________________________________________ 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 arch...@mail-archive.com