Xiang Zhang added the comment:

OK. Simplest test with positional arguments.

Without patch:

./python -m timeit -s 'import zlib; a = 
zlib.compress(b"abcdefghijklmnopqrstuvwxyz")' 'zlib.decompress(a, 15, 16384)'
1000000 loops, best of 3: 0.841 usec per loop

./python -m timeit -s 'import zlib; a = 
zlib.compress(b"abcdefghijklmnopqrstuvwxyz"); do = zlib.decompressobj()' 
'do.decompress(a, 100)'
10000 loops, best of 3: 16 usec per loop

With patch:

./python -m timeit -s 'import zlib; a = 
zlib.compress(b"abcdefghijklmnopqrstuvwxyz")' 'zlib.decompress(a, 15, 16384)'
1000000 loops, best of 3: 0.843 usec per loop

./python -m timeit -s 'import zlib; a = 
zlib.compress(b"abcdefghijklmnopqrstuvwxyz"); do = zlib.decompressobj()' 
'do.decompress(a, 100)'
10000 loops, best of 3: 16.1 usec per loop

But, with keyword specified, there is a degrade.

./python -m timeit -s 'import zlib; a = 
zlib.compress(b"abcdefghijklmnopqrstuvwxyz")' 'zlib.decompress(a, wbits=15, 
bufsize=16384)'
1000000 loops, best of 3: 1.26 usec per loop

./python -m timeit -s 'import zlib; a = 
zlib.compress(b"abcdefghijklmnopqrstuvwxyz"); do = zlib.decompressobj()' 
'do.decompress(a, max_length=100)'
10000 loops, best of 3: 16.8 usec per loop

But with large data, the difference is gone:

./python -m timeit -s 'import zlib; a = 
zlib.compress(b"abcdefghijklmnopqrstuvwxyz"*10000)' 'zlib.decompress(a, 15, 
16384)'
1000 loops, best of 3: 252 usec per loop # without patch

 ./python -m timeit -s 'import zlib; a = 
zlib.compress(b"abcdefghijklmnopqrstuvwxyz"*10000)' 'zlib.decompress(a, 
wbits=15, bufsize=16384)'
1000 loops, best of 3: 252 usec per loop # with patch

So I think it's OK for this change. There seems no performance degrade to old 
code. And considering that zlib usually does time consuming tasks (I don't 
think it's common to decompress such small data), the small slower down seems 
affordable.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue16764>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to