Hi,
The recent optimization work on ceval.c and frame objects introduced
regressions and the situation is stuck for 4 months (bpo-43760).
Right now, maybe the best would be to revert the 2 commits in the 3.10
branch, to get more time in Python 3.11 development cycle to solve
these issues.
(1) "The DISPATCH() macro is not as efficient as it could be (move
PyThreadState.use_tracing)"
https://bugs.python.org/issue43760
This change introduced an incompatible C API change. It's not
documented in What's New in Python 3.10 and there is no solution for
the 4 broken projects (including Cython).
I proposed a C API but so far, nobody implemented it.
Another option is to fix each project since the list is short. Right
now, only 4 projects are known to be broken. Fixing Cython is not
enough, you need to get a new release of broken projects (using
Cython) to regenerate the C code with the updated Cython.
(2) "Performance regression 3.10b1 and later on Windows: Py_DECREF()
not inlined in PGO build"
https://bugs.python.org/issue45116
Changes made in bpo-43760 caused a performance regression on the PGO
build of Windows.
It's a tricky issue about thresholds in compiler PGO optimization,
inlining or not static inline functions, number of statements per
function, etc.
It was proposed to workaround the specific case of the huge
_PyEval_EvalFrameDefault() function (3500 lines of C code) by
converting again some static inline functions to macros. They were
macros in Python 3.8 and were fine in Python 3.9. The performance
regression with the Windows PGO build was introduced by the recent
ceval.c work.
Victor
--
Night gathers, and now my watch begins. It shall not end until my death.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/XLEMW7PWYGIK2RHHICO3CNITZ4ETO3OZ/
Code of Conduct: http://python.org/psf/codeofconduct/
The recent optimization work on ceval.c and frame objects introduced
regressions and the situation is stuck for 4 months (bpo-43760).
Right now, maybe the best would be to revert the 2 commits in the 3.10
branch, to get more time in Python 3.11 development cycle to solve
these issues.
(1) "The DISPATCH() macro is not as efficient as it could be (move
PyThreadState.use_tracing)"
https://bugs.python.org/issue43760
This change introduced an incompatible C API change. It's not
documented in What's New in Python 3.10 and there is no solution for
the 4 broken projects (including Cython).
I proposed a C API but so far, nobody implemented it.
Another option is to fix each project since the list is short. Right
now, only 4 projects are known to be broken. Fixing Cython is not
enough, you need to get a new release of broken projects (using
Cython) to regenerate the C code with the updated Cython.
(2) "Performance regression 3.10b1 and later on Windows: Py_DECREF()
not inlined in PGO build"
https://bugs.python.org/issue45116
Changes made in bpo-43760 caused a performance regression on the PGO
build of Windows.
It's a tricky issue about thresholds in compiler PGO optimization,
inlining or not static inline functions, number of statements per
function, etc.
It was proposed to workaround the specific case of the huge
_PyEval_EvalFrameDefault() function (3500 lines of C code) by
converting again some static inline functions to macros. They were
macros in Python 3.8 and were fine in Python 3.9. The performance
regression with the Windows PGO build was introduced by the recent
ceval.c work.
Victor
--
Night gathers, and now my watch begins. It shall not end until my death.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/XLEMW7PWYGIK2RHHICO3CNITZ4ETO3OZ/
Code of Conduct: http://python.org/psf/codeofconduct/