⚡️ Speed up function generate_unified_diff by 99% in PR #274 (skip-formatting-for-large-diffs)
#288
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 #274
If you approve this dependent PR, these changes will be merged into the original PR branch
skip-formatting-for-large-diffs.📄 99% (0.99x) speedup for
generate_unified_diffincodeflash/code_utils/formatter.py⏱️ Runtime :
15.3 milliseconds→7.66 milliseconds(best of269runs)📝 Explanation and details
Here is an optimized version of your program.
Key improvements.
splitlines(keepends=True), which is significantly faster for splitting text into lines, especially on large files.extendinstead of repeatedappendcalls for cases with two appends.Performance explanation.
str.splitlines(keepends=True)is implemented in C and avoids unnecessary regex matching.append = diff_output.append) is slightly faster inside loops that append frequently.extendis ever-so-slightly faster (in CPython) than multipleappendcalls for the rare "no newline" case.This code produces exactly the same output as your original, but should be much faster (especially for large inputs).
✅ Correctness verification report:
🌀 Generated Regression Tests Details
To edit these changes
git checkout codeflash/optimize-pr274-2025-06-04T23.10.57and push.