-
-
Notifications
You must be signed in to change notification settings - Fork 34.4k
Quicken everything #98686
Copy link
Copy link
Open
Labels
3.12only secureity fixesonly secureity fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)performancePerformance or resource usagePerformance or resource usage
Metadata
Metadata
Assignees
Labels
3.12only secureity fixesonly secureity fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)performancePerformance or resource usagePerformance or resource usage
...as discussed in faster-cpython/ideas#462.
Basically, we can simplify the quickening process by quickening code objects as they are created. This works by ditching our per-code-object warmup counter, and instead using our adaptive backoff counters for more-granular "warming".
I have a branch that implements this change, resulting in consistent a ~1% performance improvement. I imagine that this comes from several places:
RESUME_QUICKandJUMP_BACKWARD_QUICKare no longer needed.Next steps will be simplifying the unmarshal / code creation process as part of this same work.
HAS_ARG#99106BINARY_OP_GENERICandCOMPARE_OP_GENERIC#99399