]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue 18719: Remove a false optimization
authorRaymond Hettinger <python@rcn.com>
Wed, 14 Aug 2013 01:16:34 +0000 (18:16 -0700)
committerRaymond Hettinger <python@rcn.com>
Wed, 14 Aug 2013 01:16:34 +0000 (18:16 -0700)
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).

Objects/stringlib/eq.h

index 8e79a43f72feb57821233df717d8becef90099f5..3e5f510e36504fdece126f689e503329839b0c0e 100644 (file)
@@ -20,15 +20,6 @@ unicode_eq(PyObject *aa, PyObject *bb)
         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;
 }