10000 bpo-42161: Micro-optimize _collections._count_elements() (GH-23008) · adorilson/cpython@0a8df09 · GitHub
[go: up one dir, main page]

Skip to content

Commit 0a8df09

Browse files
vstinneradorilson
authored andcommitted
bpo-42161: Micro-optimize _collections._count_elements() (pythonGH-23008)
Move the _PyLong_GetOne() call outside the fast-path loop.
1 parent 8471669 commit 0a8df09

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

Modules/_collectionsmodule.c

+5Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2278,6 +2278,7 @@ _collections__count_elements_impl(PyObject *module, PyObject *mapping,
22782278
PyObject *dict_get;
22792279
PyObject *mapping_setitem;
22802280
PyObject *dict_setitem;
2281+
PyObject *one = _PyLong_GetOne(); // borrowed reference
22812282

22822283
it = PyObject_GetIter(iterable);
22832284
if (it == NULL)
@@ -2324,10 +2325,10 @@ _collections__count_elements_impl(PyObject *module, PyObject *mapping,
23242325
if (oldval == NULL) {
23252326
if (PyErr_Occurred())
23262327
goto done;
2327-
if (_PyDict_SetItem_KnownHash(mapping, key, _PyLong_GetOne(), hash) < 0)
2328+
if (_PyDict_SetItem_KnownHash(mapping, key, one, hash) < 0)
23282329
goto done;
23292330
} else {
2330-
newval = PyNumber_Add(oldval, _PyLong_GetOne());
2331+
newval = PyNumber_Add(oldval, one);
23312332
if (newval == NULL)
23322333
goto done;
23332334
if (_PyDict_SetItem_KnownHash(mapping, key, newval, hash) < 0)
@@ -2336,13 +2337,13 @@ _collections__count_elements_impl(PyObject *module, PyObject *mapping,
23362337
}
23372338
Py_DECREF(key);
23382339
}
2339-
} else {
2340+
}
2341+
else {
23402342
bound_get = _PyObject_GetAttrId(mapping, &PyId_get);
23412343
if (bound_get == NULL)
23422344
goto done;
23432345

23442346
PyObject *zero = _PyLong_GetZero(); // borrowed reference
2345-
PyObject *one = _PyLong_GetOne(); // borrowed reference
23462347
while (1) {
23472348
key = PyIter_Next(it);
23482349
if (key == NULL)

0 commit comments

Comments
 (0)
0