[New-bugs-announce] [issue12805] Optimzations for bytes.join() et. al
John O'Connor
report at bugs.python.org
Mon Aug 22 02:43:56 CEST 2011
New submission from John O'Connor <tehjcon at gmail.com>:
I noticed there are a few more common cases that can be sped up in bytes.join().
When:
- The sequence length and separator length are both 0
- The separator length is 0 or 1
- The separator string contains only 1 distinct byte
These could also be applied to other sequence types.
for i in {{0..5}}; do
./python -m timeit -s "f=open('/usr/share/dict/words', 'rb'); L=f.readlines()" \
"b' '.join(L)";
done
- BEFORE -
100 loops, best of 3: 3.79 msec per loop
100 loops, best of 3: 3.5 msec per loop
100 loops, best of 3: 3.75 msec per loop
- AFTER -
100 loops, best of 3: 2.81 msec per loop
100 loops, best of 3: 2.81 msec per loop
100 loops, best of 3: 3.03 msec per loop
~20% speedup
Same test on a smaller list (lines from LICENSE file) yields a similar 15-20% speedup.
Same test on L = [b'1', b'2', b'3'] yields 10% speedup
----------
components: Interpreter Core
files: bytes_join_optimization.patch
keywords: patch
messages: 142650
nosy: benjamin.peterson, ezio.melotti, haypo, jcon, pitrou
priority: normal
severity: normal
status: open
title: Optimzations for bytes.join() et. al
type: performance
versions: Python 3.3
Added file: http://bugs.python.org/file22976/bytes_join_optimization.patch
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue12805>
_______________________________________
More information about the New-bugs-announce
mailing list