[New-bugs-announce] [issue23344] Faster marshalling

Serhiy Storchaka report at bugs.python.org
Wed Jan 28 23:22:06 CET 2015


New submission from Serhiy Storchaka:

Currently writing marshalled data to buffer is not very efficient. Data is written byte by byte with testing conditions p->fp != NULL and p->ptr != p->end for every byte. Proposed patch makes writing to buffer faster.

Benchmark results:

$ ./python -m timeit -s "import marshal; d = compile(open('Lib/_pydecimal.py').read(), '_pydecimal.py', 'exec')" -- "marshal.dumps(d)"
Unpatched: 100 loops, best of 3: 4.64 msec per loop
Patched: 100 loops, best of 3: 3.39 msec per loop

$ ./python -m timeit -s "import marshal; a = ['%010x' % i for i in range(10**4)]" -- "marshal.dumps(a)"
Unpatched: 1000 loops, best of 3: 1.96 msec per loop
Patched: 1000 loops, best of 3: 1.32 msec per loop

$ ./python -m timeit -s "import marshal; a = ['%0100x' % i for i in range(10**4)]" -- "marshal.dumps(a)"
Unpatched: 100 loops, best of 3: 10.3 msec per loop
Patched: 100 loops, best of 3: 3.39 msec per loop

----------
components: Interpreter Core
files: marshal_faster_write.patch
keywords: patch
messages: 234920
nosy: serhiy.storchaka
priority: normal
severity: normal
stage: patch review
status: open
title: Faster marshalling
type: performance
versions: Python 3.5
Added file: http://bugs.python.org/file37898/marshal_faster_write.patch

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue23344>
_______________________________________


More information about the New-bugs-announce mailing list