From: scoder Date: Mon, 11 May 2020 04:04:31 +0000 (+0200) Subject: bpo-40575: Avoid unnecessary overhead in _PyDict_GetItemIdWithError() (GH-20018) X-Git-Tag: v3.9.0b1~119 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6067d4bc3ce5ff4cfa5b47ceecc84a3941bc031c;p=thirdparty%2FPython%2Fcpython.git bpo-40575: Avoid unnecessary overhead in _PyDict_GetItemIdWithError() (GH-20018) Avoid unnecessary overhead in _PyDict_GetItemIdWithError() by calling _PyDict_GetItem_KnownHash() instead of the more generic PyDict_GetItemWithError(), since we already know the hash of interned strings. --- diff --git a/Objects/dictobject.c b/Objects/dictobject.c index fa35d16478f6..809a5ed77873 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -1492,7 +1492,9 @@ _PyDict_GetItemIdWithError(PyObject *dp, struct _Py_Identifier *key) kv = _PyUnicode_FromId(key); /* borrowed */ if (kv == NULL) return NULL; - return PyDict_GetItemWithError(dp, kv); + Py_hash_t hash = ((PyASCIIObject *) kv)->hash; + assert (hash != -1); /* interned strings have their hash value initialised */ + return _PyDict_GetItem_KnownHash(dp, kv, hash); } PyObject *