Eric V. Smith
6ba5665fc7
Fix typo in comment.
2014-01-14 08:15:03 -05:00
Raymond Hettinger
74fc8c47f6
Add comments to frozenset_hash().
...
Also, provide a minor hint to the compiler on how to group the xors.
2014-01-05 12:00:31 -08:00
Raymond Hettinger
e259f13874
Minor code clean-up. Keep the C-API all in one section.
2013-12-15 11:56:14 -08:00
Raymond Hettinger
710a67edfc
Note that LINEAR_PROBES can be set to zero.
2013-09-21 20:17:31 -07:00
Raymond Hettinger
4ef0528b97
Minor beautification. Put updates and declarations in a more logical order.
2013-09-21 15:39:49 -07:00
Raymond Hettinger
0ce1953bf7
When LINEAR_PROBES=0, let the compiler remove the dead code on its own.
2013-09-21 14:07:18 -07:00
Raymond Hettinger
c70a2b7bb9
Make the linear probe sequence clearer.
2013-09-21 14:02:55 -07:00
Raymond Hettinger
8408dc581e
Issue 18771: Make it possible to set the number linear probes at compile-time.
2013-09-15 14:57:15 -07:00
Raymond Hettinger
742d8716ff
Put the defines in the logical section and fix indentation.
2013-09-08 00:25:57 -07:00
Raymond Hettinger
583cd03fd1
Minor code beautification.
2013-09-07 22:06:35 -07:00
Raymond Hettinger
4ea9080da9
Improve code clarity by removing two unattractive macros.
2013-09-07 21:01:29 -07:00
Raymond Hettinger
8f8839e10a
Remove the freelist scheme for setobjects.
...
The setobject freelist was consuming memory but not providing much value.
Even when a freelisted setobject was available, most of the setobject
fields still needed to be initialized and the small table still required
a memset(). This meant that the custom freelisting scheme for sets was
providing almost no incremental benefit over the default Python freelist
scheme used by _PyObject_Malloc() in Objects/obmalloc.c.
2013-09-07 20:26:50 -07:00
Raymond Hettinger
04fd9dd52b
Small rearrangement to bring together the three functions for probing the hash table.
2013-09-07 17:41:01 -07:00
Raymond Hettinger
ae7b00e2d3
Move the overview comment to the top of the file.
2013-09-07 15:05:00 -07:00
Raymond Hettinger
c56e0e3980
Minor touchups.
2013-09-02 16:32:27 -07:00
Raymond Hettinger
69492dab07
Factor-out the common code for setting a KeyError.
2013-09-02 15:59:26 -07:00
Raymond Hettinger
a35adf5b09
Instead of XORed indicies, switch to a hybrid of linear probing and open addressing.
...
Modern processors tend to make consecutive memory accesses cheaper than
random probes into memory.
Small sets can fit into L1 cache, so they get less benefit. But they do
come out ahead because the consecutive probes don't probe the same key
more than once and because the randomization step occurs less frequently
(or not at all).
For the open addressing step, putting the perturb shift before the index
calculation gets the upper bits into play sooner.
2013-09-02 03:23:21 -07:00
Raymond Hettinger
6c3c1ccd1b
Update copyright.
2013-08-31 21:34:24 -07:00
Raymond Hettinger
95c0d67581
Further reduce the cost of hash collisions by inspecting an additional nearby entry.
2013-08-31 21:27:08 -07:00
Raymond Hettinger
afe890923f
Tighten-up the lookkey() logic and beautify the code a bit.
...
Use less code by moving many of the steps from the initial
lookup into the main search loop.
Beautify the code but keep the overall logic unchanged.
2013-08-28 20:59:31 -07:00
Antoine Pitrou
9d95254bb7
Issue #18772 : fix the gdb plugin after the set implementation changes
2013-08-24 21:07:07 +02:00
Raymond Hettinger
bfc1e1a9cd
Add the same dummy type that is used in dictionaries.
2013-08-23 03:22:15 -05:00
Raymond Hettinger
fcf3b500ba
Issue 18797: Remove unneeded refcount adjustments for dummy objects.
...
It suffices to keep just one reference when the object is created.
2013-08-22 08:20:31 -07:00
Raymond Hettinger
5bb1b1dd6f
Hoist the global dummy lookup out of the inner loop for set_merge().
2013-08-21 01:34:18 -07:00
Raymond Hettinger
929cbac307
Remove a redundant hash table probe (this was artifact from an earlier draft of the patch).
2013-08-20 23:03:28 -07:00