diff --git a/Doc/whatsnew/3.4.rst b/Doc/whatsnew/3.4.rst index 1c30d431994..f7d0c2654fd 100644 --- a/Doc/whatsnew/3.4.rst +++ b/Doc/whatsnew/3.4.rst @@ -389,6 +389,12 @@ Major performance enhancements have been added: * The UTF-32 decoder is now 3x to 4x faster. +* The cost of hash collisions for sets is now reduced. Each hash table + probe now checks a second key/hash pair for each cache line retrieved. + This exploits cache locality to make collision resolution less expensive. + + (Contributed by Raymond Hetting in :issue"`18771`.) + Build and C API Changes ======================= diff --git a/Misc/NEWS b/Misc/NEWS index f5dbfeec281..df4a09b9557 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,10 @@ Core and Builtins - Issue #18774: Remove last bits of GNU PTH thread code and thread_pth.h. +- Issue #18771: Add optimization to set object lookups to reduce the cost + of hash collisions. The core idea is to inspect a second key/hash pair + for each cache line retrieved. + - Issue #16105: When a signal handler fails to write to the file descriptor registered with ``signal.set_wakeup_fd()``, report an exception instead of ignoring the error.