◐ Shell
clean mode source ↗

Stackrefs (#118450) introduced a large performance regression on Windows

Bug description:

#118450 "Convert the evaluation stack to stack refs" (by @Fidget-Spinner) unfortunately seems to have introduced a 7% - 11% performance regression overall (though as much as 25% for some benchmarks) on Windows only. Linux (both x86_64 and aarch64) and macOS (arm) seem to have a change beneath the noise threshold. To be clear, @Fidget-Spinner's work is great and the lesson here is that for these sorts of sweeping low-level changes, we should have benchmarked on all of the Tier 1 platforms to be certain.

I don't know what the cause is -- it is probably MSVC not being able to "optimize through" something and introducing unnecessary overhead, but that's just a theory.

Cc: @brandtbucher, @markshannon

CPython versions tested on:

CPython main branch

Operating systems tested on:

Windows

Linked PRs