
On Thu, 2004-03-25 at 10:09, David Roundy wrote:
The function is a simple packed string compare, and I basically just call the C standard library function memcmp for this. Without further ado:
I don't know how to make your particular function faster, but I do have some ideas for different approaches you may not have thought of. If you compare strings more often than you create strings, and the comparisons usually fail, you could add a hash of the string to your PackedString datatype; then psniceq could compare hash values first and only confirm equality with the memcmp if the hash values match. You could use hash consing/interning; keep a global hash table which maps between strings and some unique identifier (your unique identifier might be an Int, or an IORef). Then you can compare the strings with a single comparison. (This table could be a memory leak in a long-running application; you could probably avoid that with weak pointers.) Carl Witty