A hybrid of and-masking and a conditional-set-to-zero produce even faster search loop.
diff --git a/Objects/setobject.c b/Objects/setobject.c
index f865d1c..ddf6822 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -671,7 +671,8 @@
 
     while ((entry = &so->table[i])->key == NULL || entry->key==dummy) {
         i++;
-        i &= so->mask;
+        if (i > so->mask)
+            i = 0;
     }
     key = entry->key;
     entry->key = dummy;