gh-94841: Ensure arena_map_get() is inlined in PyObject_Free()#94842
Conversation
gvanrossum
left a comment
There was a problem hiding this comment.
LGTM. Did you observe an improvement in performance?
|
3.11b3+ PGO (2022-07-09 7b5737a)
Faster PyObject_Free() with v143Slower PyObject_Free() with v143
|
|
To backport to 3.10, we can just use Another, more dramatic, option would be to disable the obmalloc radix tree on WIndows. E.g. |
|
Thanks @neonene for the PR, and @gvanrossum for merging it 🌮🎉.. I'm working now to backport this PR to: 3.11. |
…ythonGH-94842) (cherry picked from commit 9b3f779) Co-authored-by: neonene <53406459+neonene@users.noreply.github.com>
|
GH-94862 is a backport of this pull request to the 3.11 branch. |
|
I don’t care much about the 3.10 backport, but feel free to do more research! It looks like the compiler matters more than the processor here. |
) (cherry picked from commit 9b3f779) Co-authored-by: neonene <53406459+neonene@users.noreply.github.com>
|
@nascheme Do you want to look more into your fixes, either the 3.10-specific way to force inlining or disabling the radix tree on Windows? |
…Free() (pythonGH-94842) Co-authored-by: Neil Schemenauer <nas-github@arctrix.com> (cherry picked from commit d0850aa170580b494beda030a94fb04254e4acbc) Co-authored-by: neonene <53406459+neonene@users.noreply.github.com>
|
I made an attempt at backporting (GH-94868), not sure I did it right though. Using |
NOTE: This patch cannot be beckported to 3.10, in which
Py_ALWAYS_INLINEmacro is not introduced.