mirror of
https://github.com/python/cpython.git
synced 2024-11-24 18:34:43 +08:00
Fix terminology in comment and add more design rationale. (#3335)
* Fix terminology in comment and add more design rationale. * Fix extra space
This commit is contained in:
parent
550370957c
commit
64263dfd18
@ -12,16 +12,23 @@
|
||||
|
||||
To improve cache locality, each probe inspects a series of consecutive
|
||||
nearby entries before moving on to probes elsewhere in memory. This leaves
|
||||
us with a hybrid of linear probing and open addressing. The linear probing
|
||||
us with a hybrid of linear probing and randomized probing. The linear probing
|
||||
reduces the cost of hash collisions because consecutive memory accesses
|
||||
tend to be much cheaper than scattered probes. After LINEAR_PROBES steps,
|
||||
we then use open addressing with the upper bits from the hash value. This
|
||||
helps break-up long chains of collisions.
|
||||
we then use more of the upper bits from the hash value and apply a simple
|
||||
linear congruential random number genearator. This helps break-up long
|
||||
chains of collisions.
|
||||
|
||||
All arithmetic on hash should ignore overflow.
|
||||
|
||||
Unlike the dictionary implementation, the lookkey function can return
|
||||
NULL if the rich comparison returns an error.
|
||||
|
||||
Use cases for sets differ considerably from dictionaries where looked-up
|
||||
keys are more likely to be present. In contrast, sets are primarily
|
||||
about membership testing where the presence of an element is not known in
|
||||
advance. Accordingly, the set implementation needs to optimize for both
|
||||
the found and not-found case.
|
||||
*/
|
||||
|
||||
#include "Python.h"
|
||||
|
Loading…
Reference in New Issue
Block a user