* 64-bit aware hashing functions as the current ones are 32-bit centric.

This issue might not be the most urgent because the 32 bit hash functions should be sufficient to deal with at least moderately sized 64 bit images. But how much stuff would you have to allocate before seeing a problem?

Suppose object headers are 16 bytes and your hash functions are producing 28 bits' worth of data. Clearly hashing 2^28 objects with zero instance variables and zero byte data is kind of silly, so we put in at least one instance variable making those objects at least 24 bytes. Then you also need a hashed collection with a single table large enough to hold all those objects (ignoring e.g. hash buckets), the load factor of which will be kept at 80%. So...

24 * 2^28 * 4 // 5 + (2^28 * 8) => about 7gb

So, the current hash functions should be fine for images up to 7gb in size, and probably much larger than that because 7gb is the rock bottom low estimate. Probably one might hash strings or other objects with more data than 8 bytes. In that case, the low bound in that case will be higher.

Andres.

Reply via email to