There is a newer version of nogil-3.12 than what we tested a few months ago. Sam suggested to use d595911.
This should be compared against an upstream with the immortal object merged. Sam suggested using 018be4c, but I can't find that commit, so I'm using ea2c001, which is the merge commit of PEP 683.
In addition, the Faster CPython feels that:
Comparing against the merge base of d595911, which is 3d5d3f7 is useful to see the measure the effect of only the nogil changes directly.
It is also useful comparing against an upstream which has the same gc thresholds as the nogil branch, since the effect of that alone is so large. (See #593)
Therefore, this issue is a place to report comparisons of a recent nogil commit (d595911) against:
immortal: Upstream CPython immediately after the PEP 683 immortal objects changes were completed (ea2c001)
gc: merge-base modified so that the gc thresholds match nogil (0fd3163)
immortal-gc: PEP 683 (ea2c001) with the gc thresholds updated (82b39b9)
merge-base: Upstream CPython at the point the nogil branch was created (3d5d3f7)
Summary of results:
vs.
pyperf compare_to
distribution plots
immortal
5% slower
2% slower
gc
14% slower
12% slower
immortal-gc
10% slower
8% slower
merge-base
9% slower
7% slower
EDIT 2023-06-07T21:00: Updated summary table to include both pyperf compare_to and distribution plot results. Added a new target immortal-gc.
In the PEP 703 update thread on discuss, @colesbury suggested a few things to measure and compare.
In addition, the Faster CPython feels that:
Therefore, this issue is a place to report comparisons of a recent nogil commit (d595911) against:
Summary of results:
EDIT 2023-06-07T21:00: Updated summary table to include both
pyperf compare_to
and distribution plot results. Added a new target immortal-gc.