optimize array creation
ojii opened this issue · comments
Jonas Obrist commented
According to @alex array.array('B', [0]) * bignum
is faster than array.array('B', [0] * bigname)
. Need to fix that.
(see https://twitter.com/alex_gaynor/status/265890088251174913)
Alex Gaynor commented
Relevant benchmarks are relevant:
Alexs-MacBook-Pro-2:rdio alex_gaynor$ python -mtimeit -s "import array" "array.array('d', [0] * 1000)"
10000 loops, best of 3: 75.8 usec per loop
Alexs-MacBook-Pro-2:rdio alex_gaynor$ python -mtimeit -s "import array" "array.array('d', [0]) * 1000"
100000 loops, best of 3: 5.17 usec per loop
Alexs-MacBook-Pro-2:rdio alex_gaynor$ pypy -mtimeit -s "import array" "array.array('d', [0] * 1000)"
10000 loops, best of 3: 27.2 usec per loop
Alexs-MacBook-Pro-2:rdio alex_gaynor$ pypy -mtimeit -s "import array" "array.array('d', [0]) * 1000"
100000 loops, best of 3: 5.03 usec per loop
Jonas Obrist commented
The use case in my case (Image.new
) is even much more of a speedup:
jonas:~ python -mtimeit -s "import array" "array.array('d', [1,2,3] * 1000)"
10000 loops, best of 3: 120 usec per loop
jonas:~ python -mtimeit -s "import array" "array.array('d', [1,2,3]) * 1000"
100000 loops, best of 3: 5.48 usec per loop
jonas:~ pypy -mtimeit -s "import array" "array.array('d', [1,2,3] * 1000)"
10000 loops, best of 3: 65.5 usec per loop
jonas:~ pypy -mtimeit -s "import array" "array.array('d', [1,2,3]) * 1000"
100000 loops, best of 3: 4.89 usec per loop