String performance regression from python 3.2 to 3.3

rusi rustompmody at gmail.com
Fri Mar 15 13:07:48 EDT 2013


3.2 and 2.7 results on my desktop using Chris examples
(Hope I cut-pasted them correctly)
-----------------------------
Welcome to the Emacs shell

~ $ python3
Python 3.2.3 (default, Feb 20 2013, 17:02:41)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from timeit import timeit
>>> timeit("s=s[:-1]+'\u0034'","s='asdf'*10000",number=10000)
0.2893378734588623
>>> timeit("s=s[:-1]+'\u1234'","s='asdf'*10000",number=10000)
0.2842249870300293

>>> timeit("s=s[:-1]+'\u1234'","s='\u1234sdf'*10000",number=10000)
0.28406381607055664
>>> timeit("s=s[:-1]+'\U00012345'","s='asdf'*10000",number=10000)
0.28420209884643555
>>> timeit("s=s[:-1]+'\U00012345'","s='\u1234sdf'*10000",number=10000)
0.2853250503540039
>>> timeit("s=s[:-1]+'\U00012345'","s='\U00012345sdf'*10000",number=10000)
0.283905029296875
>>>

~ $ python
Python 2.7.3 (default, Jan  2 2013, 16:53:07)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from timeit import timeit
>>> timeit("s=s[:-1]+'\u0034'","s='asdf'*10000",number=10000)
0.20418286323547363
>>> timeit("s=s[:-1]+'\u1234'","s='asdf'*10000",number=10000)

0.20579099655151367
>>> timeit("s=s[:-1]+'\u1234'","s='\u1234sdf'*10000",number=10000)
0.5055279731750488
>>> timeit("s=s[:-1]+'\U00012345'","s='asdf'*10000",number=10000)
0.28449511528015137
>>> timeit("s=s[:-1]+'\U00012345'","s='\u1234sdf'*10000",number=10000)
0.6001529693603516
>>> timeit("s=s[:-1]+'\U00012345'","s='\U00012345sdf'*10000",number=10000)
0.8430721759796143



More information about the Python-list mailing list