directives_meta.py: simplify _remove_directives#51858
Merged
Conversation
* Since the input arg is a tuple/list, start with iteration, avoiding one level of guaranteed recursion and an `isinstance` check. * Avoid the generator expression which makes Python cycle between two stack frames and doing another function call. Instead use native iteration. The whole `_remove_directives` function is rather unfortunate, adding 500ms of overhead. Not sure if it can easily be improved other than "leaky abstractions" (targeting it to `depends_on` directives, and looking for the `patches` kwarg). I'll just leave it optimizing the current implementation. Signed-off-by: Harmen Stoppels <[email protected]>
alalazo
approved these changes
Jan 19, 2026
Member
|
There are nasty details, but they are well commented, so LGTM |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
one level of guaranteed recursion and an
isinstancecheck.as well as capturing
argin a cell, which is then de-referencedmore than a million times (hottest
LOAD_DEREFinstruction inSpack).
Saves about 0.3s for me in practice. Not much, but better than nothing.
(The whole
_remove_directivesfunction is rather unfortunate, adding500ms of overhead. Not sure if it can easily be improved other than
"leaky abstractions" targeting it to
depends_ondirectives, andlooking for the
patcheskwarg. This PR just optimizes the existingimplementation)