From: Raymond Hettinger Date: Mon, 9 Jan 2017 03:34:28 +0000 (-0800) Subject: Sync-up lru_cache() C code with space saving feature in the Python version. X-Git-Tag: v3.7.0a1~1599 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9d60b94427f42b3f543e398205113a1b18b43598;p=python Sync-up lru_cache() C code with space saving feature in the Python version. --- diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c index 62b45e98cb..bc34c215b4 100644 --- a/Modules/_functoolsmodule.c +++ b/Modules/_functoolsmodule.c @@ -709,6 +709,12 @@ lru_cache_make_key(PyObject *args, PyObject *kwds, int typed) /* short path, key will match args anyway, which is a tuple */ if (!typed && !kwds) { + if (PyTuple_GET_SIZE(args) == 1) { + /* Save space and improve speed by unwrapping 1-tuples */ + key = PyTuple_GET_ITEM(args, 0); + Py_INCREF(key); + return key; + } Py_INCREF(args); return args; }