Browse Source

Restore quick exit (no freeslot check) for common case (found null on first probe).

pull/9921/head
Raymond Hettinger 11 years ago
parent
commit
6ee588f14e
  1. 12
      Objects/setobject.c

12
Objects/setobject.c

@ -142,7 +142,10 @@ set_insert_key(PySetObject *so, PyObject *key, Py_hash_t hash)
entry = &table[i];
if (entry->key == NULL)
goto found_null;
goto found_null_first;
freeslot = NULL;
perturb = hash;
while (1) {
if (entry->hash == hash) {
@ -207,6 +210,13 @@ set_insert_key(PySetObject *so, PyObject *key, Py_hash_t hash)
goto found_null;
}
found_null_first:
so->fill++;
so->used++;
entry->key = key;
entry->hash = hash;
return 0;
found_null:
if (freeslot == NULL) {
/* UNUSED */

Loading…
Cancel
Save