[Patches] [ python-Patches-1605020 ] Performance boost for array repeat

SourceForge.net noreply at sourceforge.net
Wed Nov 29 10:31:01 CET 2006


Patches item #1605020, was opened at 2006-11-29 05:49
Message generated for change (Comment added) made by gbrandl
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1605020&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Core (C code)
Group: Python 2.6
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Mike Klaas (mklaas)
Assigned to: Nobody/Anonymous (nobody)
Summary: Performance boost for array repeat

Initial Comment:
Copy in exponentially-increasing sized chunks when performing array repeat.  This enables fast initialization of large arrays.  Performance is about an order of magnitude increase for single-element arrays, and about two orders of magnitude faster for single-element character arrays (see comments)

----------------------------------------------------------------------

>Comment By: Georg Brandl (gbrandl)
Date: 2006-11-29 09:31

Message:
Logged In: YES 
user_id=849994
Originator: NO

How does this patch relate to patch #1569291?

----------------------------------------------------------------------

Comment By: Mike Klaas (mklaas)
Date: 2006-11-29 05:54

Message:
Logged In: YES 
user_id=1611720
Originator: YES

Benchmarks on slightly-contended machine; before & after

[ python-trunk]$ python -m timeit -s "from array import array" "array('c',
'\0')*100000"
100 loops, best of 3: 4 msec per loop
[ python-trunk]$ ./python -m timeit -s "from array import array"
"array('c', '\0')*100000"
100000 loops, best of 3: 14.5 usec per loop

[ python-trunk]$ python -m timeit -s "from array import array" "array('i',
[0])*100000"
100 loops, best of 3: 3.42 msec per loop
[ python-trunk]$ ./python -m timeit -s "from array import array"
"array('i', [0])*100000" 
1000 loops, best of 3: 517 usec per loop

[ python-trunk]$ python -m timeit -s "from array import array" "array('i',
[0,1,2,3])*100000"
100 loops, best of 3: 4.95 msec per loop
[ python-trunk]$ ./python -m timeit -s "from array import array"
"array('i', [0,1,2,3])*100000"
100 loops, best of 3: 2.55 msec per loop

[ python-trunk]$ python -m timeit -s "from array import array" "array('c',
'\0'*100)*1000"
10000 loops, best of 3: 46.6 usec per loop
[ python-trunk]$ ./python -m timeit -s "from array import array"
"array('c', '\0'*100)*1000"
100000 loops, best of 3: 19.6 usec per loop

[ python-trunk]$ python -m timeit -s "from array import array" "array('c',
'\0'*1000)*100"
10000 loops, best of 3: 22.8 usec per loop
[ python-trunk]$ ./python -m timeit -s "from array import array"
"array('c', '\0'*1000)*100"
10000 loops, best of 3: 20.7 usec per loop


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1605020&group_id=5470


More information about the Patches mailing list