On Apr 8, 2006, at 7:12 PM, [EMAIL PROTECTED] wrote:

Okay, I've got the dictionary loaded, but HasKey is always returning false. Any Ideas?

BinCount of the dictionary is 65521, Count is 177741, loading it takes 2 seconds on a dual 1 GHz G4, and HasKey returns an answer virtually instantaneously.


Your BinCount is too small. Set it to 3*177741. If that fixes your problem, then you have found a problem with the Dictionary implementation.

No, that didn't fix it.

The BinCount should be set as I suggested anyway.


I did find something quite interesting, but I don't know if it's related. I made a simple loop that gets a few keys from the dictionary. The resulting string is:

Indexes 700 to 710
accessible
accessibly
accessing
accession
accessioned
accessioning
accessions
accessories
accessorise
accessorised
accessorises

The first line is hard coded, and the subsequent lines are the result of a for-next loop. Notice the spaces between the letters. What's interesting is that when I copy the same string variable to an editfield using code at runtime, the letters appear as expected - no spaces. If I select all of the text in the editfield, copy it to the clipboard, and paste it in Mail, I get exactly the same result. The first line has no spaces between letters, and the rest do. I tried copying and pasting one of the above words into my input box, but HasKey still returned false.

Encoding problem, maybe?  The source text file is encoded UTF-16.

Could be; perhaps you should track down the problem and see about getting it fixed.


You might also consider an alternative implementation. Load the word list into an array, sort it, and write the result out to a file. Then you can load the sorted list at runtime and use binary search to look up a word. This will require either 18 or 19 string comparisons for each lookup. It may be slower than a Dictionary on average, but it's guaranteed to be faster in the worst case, and it uses less memory.

Do you mean to handle it just like a database handles itself? I understand that concept, but how do you do it?


Well, you can sort the array using Array.Sort. To do a binary search, my SortLibrary implements it -- well, it implements it for objects. I'll add a function for searching string arrays and make it available soon.

Charles Yeomans
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to