⚡️ Speed up cell_len()
by 44% in rich/cells.py
#20
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.
📄
cell_len()
inrich/cells.py
📈 Performance improved by
44%
(0.44x
faster)⏱️ Runtime went down from
378 milliseconds
to263 milliseconds
Explanation and details
Here is the rewritten program optimized for runtime and memory requirements.
Explanation of Optimization.
Reduced Redundant Variable Assignment:
_get_size = get_character_cell_size
inside thecell_len
function to directly useget_character_cell_size
in thesum
function.Use of
map
Function:sum
with themap
function, which is often faster and more memory-efficient as it applies the function directly to elements in the text.Using the
map
function streamlines the application ofget_character_cell_size
to each character intext
, reducing overhead associated with Python's high-level looping constructs. This small change can lead to performance improvements, especially noticeable with larger inputs that exceed the threshold of 512 characters.Correctness verification
The new optimized code was tested for correctness. The results are listed below.
✅ 7 Passed − ⚙️ Existing Unit Tests
(click to show existing tests)
✅ 28 Passed − 🌀 Generated Regression Tests
(click to show generated tests)
🔘 (none found) − ⏪ Replay Tests