Micro optimizations after staring at gprof output for a while.
This commit is contained in:
parent
54cf12b625
commit
4d0277233e
|
@ -566,8 +566,8 @@ PyDict_GetItem(PyObject *op, PyObject *key)
|
|||
PyThreadState *tstate;
|
||||
if (!PyDict_Check(op))
|
||||
return NULL;
|
||||
if (!PyString_CheckExact(key) ||
|
||||
(hash = ((PyStringObject *) key)->ob_shash) == -1)
|
||||
if (!PyUnicode_CheckExact(key) ||
|
||||
(hash = ((PyUnicodeObject *) key)->hash) == -1)
|
||||
{
|
||||
hash = PyObject_Hash(key);
|
||||
if (hash == -1) {
|
||||
|
@ -650,12 +650,9 @@ PyDict_SetItem(register PyObject *op, PyObject *key, PyObject *value)
|
|||
assert(key);
|
||||
assert(value);
|
||||
mp = (dictobject *)op;
|
||||
if (PyString_CheckExact(key)) {
|
||||
hash = ((PyStringObject *)key)->ob_shash;
|
||||
if (hash == -1)
|
||||
hash = PyObject_Hash(key);
|
||||
}
|
||||
else {
|
||||
if (!PyUnicode_CheckExact(key) ||
|
||||
(hash = ((PyUnicodeObject *) key)->hash) == -1)
|
||||
{
|
||||
hash = PyObject_Hash(key);
|
||||
if (hash == -1)
|
||||
return -1;
|
||||
|
|
|
@ -6597,9 +6597,10 @@ unicode_hash(PyUnicodeObject *self)
|
|||
/* Since Unicode objects compare equal to their UTF-8 string
|
||||
counterparts, we hash the UTF-8 string. */
|
||||
PyObject *v = _PyUnicode_AsDefaultEncodedString((PyObject*)self, NULL);
|
||||
long x = PyObject_Hash(v);
|
||||
self->hash = x;
|
||||
return x;
|
||||
if (v == NULL)
|
||||
return -1;
|
||||
assert(PyString_CheckExact(v));
|
||||
return self->hash = v->ob_type->tp_hash(v);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue