New submission from Serhiy Storchaka <storchaka+cpyt...@gmail.com>:

The proposed PR reduces an overhead of calling Py_EnterRecursiveCall() when 
pickle simple non-recusive values: None, True, False, instances of int, float, 
bytes, str.

$ ./python -m timeit -s 'data = list(range(10**7)); import pickle' -- 
'pickle.dumps(data)'

Unpatched:  218 msec per loop
Patched:    147 msec per loop

$ ./python -m timeit -s 'data = list(map(float, range(10**7))); import pickle' 
-- 'pickle.dumps(data)'

Unpatched:  218 msec per loop
Patched:    179 msec per loop

$ ./python -m timeit -s 'data = list(map(str, range(10**6))); import pickle' -- 
'pickle.dumps(data)'

Unpatched:  212 msec per loop
Patched:    201 msec per loop

----------
components: Library (Lib)
messages: 321841
nosy: alexandre.vassalotti, pitrou, serhiy.storchaka
priority: normal
severity: normal
status: open
title: Speed up pickling simple non-recusive values
type: performance
versions: Python 3.8

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

Reply via email to