Performance of Python 2.3 and 2.4

Tim Peters tim.peters at gmail.com
Sat Apr 22 19:11:05 EDT 2006


[Michal Kwiatkowski]
> I was just wondering...
>
> Python 2.3.5 (#2, Mar  6 2006, 10:12:24)
> [GCC 4.0.3 20060304 (prerelease) (Debian 4.0.2-10)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import timeit
> >>> a = timeit.Timer('2**100000000')
> >>> b = timeit.Timer('112233445566778899 * 112233445566778899')
> >>> a.timeit(1)
> 5.3986599445343018
> >>> b.timeit()
> 0.59309601783752441
>
> Python 2.4.2 (#2, Nov 20 2005, 17:04:48)
> [GCC 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import timeit
> >>> a = timeit.Timer('2**100000000')
> >>> b = timeit.Timer('112233445566778899 * 112233445566778899')
> >>> a.timeit(1)
> 13.129707813262939
> >>> b.timeit()
> 0.72854804992675781
>
> Why long numbers operations are slower in 2.4?

In general, they're not.  Here on Windows, with those specific examples:

"""
$ type ls.py
import timeit
a = timeit.Timer('2**100000000')
b = timeit.Timer('112233445566778899 * 112233445566778899')
print a.timeit(1)
print b.timeit()

$ \python23\python ls.py
6.96490123499
0.266523717213

$ \python24\python ls.py
6.81509407621
0.204446820019
"""

So 2.4 is faster on those specific examples here.  Some of that's
probably due to code changes, and the rest to that the released
Windows 2.3.5 and 2.4.3 were compiled with different versions of MS's
C compiler, and VC 7.1 happened to do better optimization of the
relevant C code than VC 6.0.

I note that your Pythons were compiled with different (pre)releases of
gcc, so if you want to pursue this the first thing to do is compile
both Pythons with the same gcc.  The effectiveness of the platform C's
optimization matters a lot here.



More information about the Python-list mailing list