@bmf I'd usually only copy before returning if threads are involved.
@bmf I like to return the mutable one as an NSArray and make the client responsible for copying it if it wants to hold onto that value.
@jimcorreia It spends lots of time finding the right bucket.
@jimcorreia I have some datasets from SpamSieve where inserting lots of string keys is 100x slower than Tiger. (Sent to Apple a while ago.)
Too bad the Core Foundation source isn't available yet: http://tinyurl.com/yrzeo9
It seems that the new string hashing algorithm is *not* the reason for CFDictionary's pathological slowness in Leopard.