diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2020-11-22 20:00:53 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-22 20:00:53 (GMT) |
commit | 313467efdc23a1ec8662b77d2001642be598f80a (patch) | |
tree | 1a50301bd304e7dd0113060a4b86a228ddebf943 /Objects/bytesobject.c | |
parent | 5ef53a88f3130cfcf9a9be3abd2ff2f997902647 (diff) | |
download | cpython-313467efdc23a1ec8662b77d2001642be598f80a.zip cpython-313467efdc23a1ec8662b77d2001642be598f80a.tar.gz cpython-313467efdc23a1ec8662b77d2001642be598f80a.tar.bz2 |
bpo-42435: Speed up comparison of bytes and bytearray object (GH--23461)
* Speed up comparison of bytes objects with non-bytes objects when
option -b is specified.
* Speed up comparison of bytarray objects with non-buffer object.
Diffstat (limited to 'Objects/bytesobject.c')
-rw-r--r-- | Objects/bytesobject.c | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index 990730c..bb84409 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -1538,36 +1538,19 @@ bytes_richcompare(PyBytesObject *a, PyBytesObject *b, int op) int c; Py_ssize_t len_a, len_b; Py_ssize_t min_len; - int rc; /* Make sure both arguments are strings. */ if (!(PyBytes_Check(a) && PyBytes_Check(b))) { if (_Py_GetConfig()->bytes_warning && (op == Py_EQ || op == Py_NE)) { - rc = PyObject_IsInstance((PyObject*)a, - (PyObject*)&PyUnicode_Type); - if (!rc) - rc = PyObject_IsInstance((PyObject*)b, - (PyObject*)&PyUnicode_Type); - if (rc < 0) - return NULL; - if (rc) { + if (PyUnicode_Check(a) || PyUnicode_Check(b)) { if (PyErr_WarnEx(PyExc_BytesWarning, "Comparison between bytes and string", 1)) return NULL; } - else { - rc = PyObject_IsInstance((PyObject*)a, - (PyObject*)&PyLong_Type); - if (!rc) - rc = PyObject_IsInstance((PyObject*)b, - (PyObject*)&PyLong_Type); - if (rc < 0) + if (PyLong_Check(a) || PyLong_Check(b)) { + if (PyErr_WarnEx(PyExc_BytesWarning, + "Comparison between bytes and int", 1)) return NULL; - if (rc) { - if (PyErr_WarnEx(PyExc_BytesWarning, - "Comparison between bytes and int", 1)) - return NULL; - } } } Py_RETURN_NOTIMPLEMENTED; |