Speed-up for loops
BartC
bc at freeuk.com
Mon Sep 6 08:32:46 EDT 2010
"Stefan Behnel" <stefan_ml at behnel.de> wrote in message
news:mailman.485.1283772019.29448.python-list at python.org...
> BartC, 06.09.2010 12:38:
>> (2) Integer arithmetic seems to go straight from 32-bits to long
>> integers; why not use 64-bits before needing long integers?
>
> You are making assumptions based on Python 2, I guess. Try Python 3.1 or
> later instead, where the int and long types are unified. Also, the
> implementation is a bit more complex than you appear to be thinking. Don't
> forget that it has received serious benchmarking based optimisations.
That's true; wider arithmetic was less of an overhead in Python 3.
This shows the effect of making several small optimisations which might
otherwise be dismissed: with the +100 test, the Python 3 faster wider
arithmetic, *plus* the 4x loop unrolling, resulted in an 85% speed increase
compared with Python 2 using the original loop. Which is pretty good
considering Python 3 is generally slower than '2'.
>> This can be very fast, since
>> the loop counter need not be a Python object
>
> It still has to count, though.
That might be just a couple of machine instructions. Plus the bytecode
overhead.
--
Bartc
More information about the Python-list
mailing list