You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2019-07-17.12:24:34.174>created_at=<Date2019-07-10.10:59:54.080>labels= ['interpreter-core', '3.9', 'performance']
title='Optimize pymalloc for non PGO build'updated_at=<Date2019-08-18.10:11:20.109>user='https://github.com/methane'
When PGO is not used, compilers don't know which part is hot.
So gcc failed to inline hot code in pymalloc_alloc and pymalloc_free
into _PyObject_Malloc and _PyObject_Free. For example, only this code is inlined into _PyObject_Malloc.
if (nbytes==0) {
return0;
}
if (nbytes>SMALL_REQUEST_THRESHOLD) {
return0;
}
But the hottest part is taking memory block from freelist in the pool.
To optimize it,
make pymalloc_alloc and pymalloc_free inline functions
Split code for rare / slow paths out to new functions
In PR 14674, pymalloc is now as fast as mimalloc in spectral_norm benchmark.
$ ./python bm_spectral_norm.py --compare-to=./python-master
python-master: ..................... 199 ms +- 1 ms
python: ..................... 176 ms +- 1 ms
Mean +- std dev: [python-master] 199 ms +- 1 ms -> [python] 176 ms +- 1 ms: 1.13x faster (-11%)
Activity
methane commentedon Jul 10, 2019
When PGO is not used, compilers don't know which part is hot.
So gcc failed to inline hot code in pymalloc_alloc and pymalloc_free
into _PyObject_Malloc and _PyObject_Free. For example, only this code is inlined into _PyObject_Malloc.
But the hottest part is taking memory block from freelist in the pool.
To optimize it,
In PR 14674, pymalloc is now as fast as mimalloc in spectral_norm benchmark.
Mean +- std dev: [python-master] 199 ms +- 1 ms -> [python] 176 ms +- 1 ms: 1.13x faster (-11%)
methane commentedon Jul 17, 2019
New changeset fb26504 by Inada Naoki in branch 'master':
bpo-37543: optimize pymalloc (bpo-14674)
fb26504