[Python-checkins] cpython (3.3): Issue 18719: Remove a false optimization

raymond.hettinger python-checkins at python.org
Wed Aug 14 03:21:14 CEST 2013


http://hg.python.org/cpython/rev/8f9bc9283400
changeset:   85166:8f9bc9283400
branch:      3.3
parent:      85163:0bb9346665e9
user:        Raymond Hettinger <python at rcn.com>
date:        Tue Aug 13 18:16:34 2013 -0700
summary:
  Issue 18719: Remove a false optimization

Remove an unused early-out test from the critical path for
dict and set lookups.

When the strings already have matching lengths, kinds, and hashes,
there is no additional information gained by checking the first
characters (the probability of a mismatch is already known to
be less than 1 in 2**64).

files:
  Objects/stringlib/eq.h |  9 ---------
  1 files changed, 0 insertions(+), 9 deletions(-)


diff --git a/Objects/stringlib/eq.h b/Objects/stringlib/eq.h
--- a/Objects/stringlib/eq.h
+++ b/Objects/stringlib/eq.h
@@ -20,15 +20,6 @@
         return 1;
     if (PyUnicode_KIND(a) != PyUnicode_KIND(b))
         return 0;
-    /* Just comparing the first byte is enough to see if a and b differ.
-     * If they are 2 byte or 4 byte character most differences will happen in
-     * the lower bytes anyways.
-     */
-    if (PyUnicode_1BYTE_DATA(a)[0] != PyUnicode_1BYTE_DATA(b)[0])
-        return 0;
-    if (PyUnicode_KIND(a) == PyUnicode_1BYTE_KIND &&
-        PyUnicode_GET_LENGTH(a) == 1)
-        return 1;
     return memcmp(PyUnicode_1BYTE_DATA(a), PyUnicode_1BYTE_DATA(b),
                   PyUnicode_GET_LENGTH(a) * PyUnicode_KIND(a)) == 0;
 }

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list