In my experience, the line-by-line annotation isn’t reliable in “perf”. It may depend on your processor. I have a AMD Ryzen CPU.
If you want to check whether the DISPATCH change is responsible for some slowdown, the easiest way is to undo it, i.e. manually hoist the &tstate->interp->ceval.eval_breaker
in a local variable at the beginning of _PyEval_EvalFrameDefault
(since this is a pointer value that won’t change).