On Tue, Dec 14, 2021 at 7:27 PM Eric Snow <ericsnowcurren...@gmail.com> wrote: > We have some options: > > * live with the full penalty > * make other changes to reduce the penalty to a more acceptable > threshold than 5% > * eliminate the penalty (e.g. claw back 5% elsewhere)
The last time I saw a benchmark on immortal object, it was clearly 10% slower overall on the pyperformance benchmark suite. That's a major slowdown. > * abandon all hope I wrote https://bugs.python.org/issue39511 and https://github.com/python/cpython/pull/18301 to have per-interpreter None, True and False singletons. My change is backward compatible on the C API: you can still use "Py_None" in your C code. The code gets the singleton object from the current interpreter with a function call: #define Py_None Py_GetNone() Py_GetNone() is implemented as: "return _PyInterpreterState_GET()->none;" If _PyInterpreterState_GET() is modified to read a thread-local state, similar to the on-going work to get the Python thread state from a thread-local variable, Py_GetNone() should be "cheap" but I didn't run a benchmark. While I was working on this issue, I was fighting against other challenges caused by subinterpreters. I fixed some of them since that time. By the way, I made the _Py_IDENTIFIER() API and _PyUnicode_FromId() compatible with subinterpreters in Python 3.10. This change caused a subtle regression when using subintepreters (because an optimization made on an assumption on interned strings which is no longer true). The fix is trivial but I didn't wrote it yet: https://bugs.python.org/issue46006 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-le...@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/GNPTATVA65JQEQUU2TZ7DAZZBAF5LMK7/ Code of Conduct: http://python.org/psf/codeofconduct/