Micro-optimize TypeTraverserVisitor by JukkaL · Pull Request #19459 · python/mypy
Specialize for concrete sequence types (`list` and `tuple`) for faster iteration, since the traversal code is very hot. I used log tracing (#19457) to identify functions where PyObject_GetIter was called frequently. This is a aart of a set of micro-optimizations that improve self check performance by ~5.5%.
JukkaL added a commit that referenced this pull request
Jul 16, 2025Specialize a hot for loop for the concrete `tuple` and `list` types. Also add a fast path for empty type arguments. The approach is similar to what I used in #19459. This is a part of a set of micro-optimizations that improve self check performance by ~5.5%.
JukkaL added a commit that referenced this pull request
Jul 17, 2025Specialize a hot for loop for the concrete `tuple` and `list` types. Also add a fast path for empty type arguments. The approach is similar to what I used in #19459. This is a part of a set of micro-optimizations that improve self check performance by ~5.5%.
JukkaL added a commit that referenced this pull request
Jul 18, 2025Specialize iteration for the concrete types `list` and `tuple`, since this is faster than iterating over an abstract iterable in compiled code. Also avoid constructing many temporary lists. Duplicate some very hot code in the hopes further improving performance slightly, through inlining and possibly also better branch prediction. The approach is similar to what I used in #19459. This is a part of a set of micro-optimizations that improve self check performance by ~5.5%.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters