⚡️ Speed up method InjectPerfOnly.visit_FunctionDef
by 24% in PR #363 (part-1-windows-fixes
)
#368
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.
⚡️ This pull request contains optimizations for PR #363
If you approve this dependent PR, these changes will be merged into the original PR branch
part-1-windows-fixes
.📄 24% (0.24x) speedup for
InjectPerfOnly.visit_FunctionDef
incodeflash/code_utils/instrument_existing_tests.py
⏱️ Runtime :
5.76 milliseconds
→4.65 milliseconds
(best of191
runs)📝 Explanation and details
Here's an optimized rewrite of your original code, focusing on critical hotspots from the profiler data.
Optimization summary:
node_in_call_position
logic directly into find_and_update_line_node to avoid repeated function call overhead for every AST node; because inner loop is extremely hot.ast.Name(id="codeflash_loop_index", ctx=ast.Load())
construction by storing as a field (self.ast_codeflash_loop_index
etc.) (since they're repeated many times for a single method walk, re-use them).Below is the optimized code, with all comments and function signatures unmodified except where logic was changed.
Key performance wins:
This will substantially improve the speed of the code when processing many test nodes with many function call ASTs.
✅ Correctness verification report:
🌀 Generated Regression Tests and Runtime
To edit these changes
git checkout codeflash/optimize-pr363-2025-06-22T23.07.59
and push.