[Python-Dev] tuple[int] optimization

Andrew Svetlov andrew.svetlov at gmail.com
Sun Jul 24 02:15:52 CEST 2011


You right. Sorry, I missed changes in ceval.c for py3k.
Please note, simple test like:

from timeit import timeit

print('list', timeit("l[0]", "l = [1]"))
print('tuple', timeit("l[0]", "l = (1,)"))

Has results:

andrew at ocean ~/p/cpython> python2.7 z.py
('list', 0.03479599952697754)
('tuple', 0.046610116958618164)

andrew at ocean ~/p/cpython> python3.2 z.py
list 0.04870104789733887
tuple 0.04825997352600098

For python2.7 list[int] microoptimization saves 25-30%, while 3.2 (and
trunk) very close to "unoptimized" 2.7 version.

On Sun, Jul 24, 2011 at 2:27 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:
> On Sun, 24 Jul 2011 09:13:07 +1000
> Ryan Kelly <ryan at rfk.id.au> wrote:
>>
>> In latest trunk this optimisation seems to have gone away, the code is
>> now:
>>
>>         TARGET(BINARY_SUBSCR)
>>             w = POP();
>>             v = TOP();
>>             x = PyObject_GetItem(v, w);
>>             Py_DECREF(v);
>>             Py_DECREF(w);
>>             SET_TOP(x);
>>             if (x != NULL) DISPATCH();
>>             break;
>>
>> The implementation of PyObject_GetItem doesn't appear to have changed
>> though.  Maybe this optimisation was no longer worth it in practice?
>
> The optimization was probably removed because PyInt objects don't exist
> anymore. There's a related but more ambitious patch at
> http://bugs.python.org/issue10044.
>
> In practice however, such micro-optimizations usually have little or no
> effect.
>
> Regards
>
> Antoine.
>
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/andrew.svetlov%40gmail.com
>


More information about the Python-Dev mailing list