Skip to content

Drop to_pickable()/from_pickable() helpers#667

Merged
skirpichev merged 1 commit intompmath:masterfrom
skirpichev:fix-440-pickle
Sep 5, 2023
Merged

Drop to_pickable()/from_pickable() helpers#667
skirpichev merged 1 commit intompmath:masterfrom
skirpichev:fix-440-pickle

Conversation

@skirpichev
Copy link
Collaborator

@skirpichev skirpichev commented Mar 26, 2023

Without gmpy2:

    >>> import mpmath, pickle
    >>> pi = mpmath.pi
    >>> mpmath.mp.dps=100
    >>> a = mpmath.mpf(pi)
    >>> len(pickle.dumps(a))  # vs 147
    105

Fixes #440

  • test speed

@skirpichev
Copy link
Collaborator Author

With gmpy2:

# on the master:
$ python -m timeit -r10 -s 'from mpmath import mp,pi,mpf;mp.dps=100;a=mpf(pi)' \
    -s 'from pickle import dumps' 'dumps(a)'
10000 loops, best of 10: 21.3 usec per loop
$ python -m timeit -r10 -s 'from mpmath import mp,pi,mpf;mp.dps=100;a=mpf(pi)' \
    -s 'from pickle import loads,dumps;b=dumps(a)' 'loads(b)'
10000 loops, best of 10: 24.6 usec per loop
# on this branch:
$ python -m timeit -r10 -s 'from mpmath import mp,pi,mpf;mp.dps=100;a=mpf(pi)' \
    -s 'from pickle import dumps' 'dumps(a)'
10000 loops, best of 10: 27.7 usec per loop
$ python -m timeit -r10 -s 'from mpmath import mp,pi,mpf;mp.dps=100;a=mpf(pi)' \
    -s 'from pickle import loads,dumps;b=dumps(a)' 'loads(b)'
10000 loops, best of 10: 25.1 usec per loop

Without:

# on the master:
$ python -m timeit -r10 -s 'from mpmath import mp,pi,mpf;mp.dps=100;a=mpf(pi)' \
    -s 'from pickle import dumps' 'dumps(a)'
20000 loops, best of 10: 19.8 usec per loop
$ python -m timeit -r10 -s 'from mpmath import mp,pi,mpf;mp.dps=100;a=mpf(pi)' \
    -s 'from pickle import loads,dumps;b=dumps(a)' 'loads(b)'
10000 loops, best of 10: 21.5 usec per loop
# on this branch:
$ python -m timeit -r10 -s 'from mpmath import mp,pi,mpf;mp.dps=100;a=mpf(pi)' \
    -s 'from pickle import dumps' 'dumps(a)'
20000 loops, best of 10: 14.5 usec per loop
$ python -m timeit -r10 -s 'from mpmath import mp,pi,mpf;mp.dps=100;a=mpf(pi)' \
    -s 'from pickle import loads,dumps;b=dumps(a)' 'loads(b)'
20000 loops, best of 10: 18.5 usec per loop

Without gmpy2:
    >>> import mpmath, pickle
    >>> pi = mpmath.pi
    >>> mpmath.mp.dps=100
    >>> a = mpmath.mpf(pi)
    >>> len(pickle.dumps(a))  # vs 147
    105

Fixes mpmath#440
@skirpichev skirpichev merged commit 21fe1e6 into mpmath:master Sep 5, 2023
@skirpichev skirpichev deleted the fix-440-pickle branch September 5, 2023 04:28
@skirpichev skirpichev added this to the 1.4 milestone May 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

to_pickable/from_pickable may be obsoleted or may be more simple

2 participants