(original) (raw)

On Tue, Jan 17, 2012 at 7:58 PM, "Martin v. L�wis" <martin@v.loewis.de> wrote:
Am 17.01.2012 22:26, schrieb Antoine Pitrou:
> Only 2 bits are used in ob\_sstate, meaning 30 are left. These 30 bits
> could cache a "hash perturbation" computed from the string and the
> random bits:
>
> - hash() would use ob\_shash
> - dict\_lookup() would use ((ob\_shash \* 1000003) ^ (ob\_sstate & \~3))
>
> This way, you cache almost all computations, adding only a computation
> and a couple logical ops when looking up a string in a dict.

That's a good idea. For Unicode, it might be best to add another slot
into the object, even though this increases the object size.

Wouldn't that break the ABI in 2.x?