diff -r 08b3ee523577 Python/ceval.c --- a/Python/ceval.c Tue Jul 15 13:23:58 2014 +0300 +++ b/Python/ceval.c Wed Jul 16 10:13:18 2014 +0200 @@ -1561,6 +1561,23 @@ PyEval_EvalFrameEx(PyFrameObject *f, int sum = unicode_concatenate(left, right, f, next_instr); /* unicode_concatenate consumed the ref to v */ } + /* Fast path for small ints */ + else if (PyLong_CheckExact(left) && Py_ABS(Py_SIZE(left)) <= 1 && + PyLong_CheckExact(right) && Py_ABS(Py_SIZE(right)) <= 1) { + long a, b; + if (Py_SIZE(left) != 0) { + a = ((PyLongObject*)left)->ob_digit[0]; + a *= Py_SIZE(left); + } else + a = 0; + if (Py_SIZE(right) != 0) { + b = ((PyLongObject*)right)->ob_digit[0]; + b *= Py_SIZE(right); + } else + b = 0; + sum = PyLong_FromLong(a + b); + Py_DECREF(left); + } else { sum = PyNumber_Add(left, right); Py_DECREF(left);