Author jdemeyer
Recipients eric.smith, jdemeyer, mark.dickinson, rhettinger, sir-sigurd, tim.peters
Date 2018-09-25.08:34:29
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1537864469.14.0.545547206417.issue34751@psf.upfronthosting.co.za>
In-reply-to
Content
> The low bits are already un-improvable in the most important cases.

Maybe you misunderstood me. Suppose that there is a hash collision, say hash((3, 3)) == hash((-3, -3)) and you change the hashing algorithm to fix this collision. If that change does NOT affect the lower N bits, then you still have a collision hash((3, 3)) % 2**N == hash((-3, -3)) % 2**N. This is relevant because the dict implementation starts by taking the lower bits first. So ideally we want to avoid hash collisions in the lower bits too.

This may also be a reason to avoid the standard FNV multipliers: the 64-bit FNV multiplier was chosen with the full 64-bit hash range in mind. It was never meant to work well when truncated to some lower N bits.
History
Date User Action Args
2018-09-25 08:34:29jdemeyersetrecipients: + jdemeyer, tim.peters, rhettinger, mark.dickinson, eric.smith, sir-sigurd
2018-09-25 08:34:29jdemeyersetmessageid: <1537864469.14.0.545547206417.issue34751@psf.upfronthosting.co.za>
2018-09-25 08:34:29jdemeyerlinkissue34751 messages
2018-09-25 08:34:29jdemeyercreate