⚡️ Speed up function get_bbox_size_category
by 12%
#41
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.
📄 12% (0.12x) speedup for
get_bbox_size_category
insupervision/metrics/utils/object_size.py
⏱️ Runtime :
357 microseconds
→320 microseconds
(best of43
runs)📝 Explanation and details
Here is an optimized version of the provided Python program.
Explanation of Optimizations
Replaced
len(xyxy.shape)
Check withxyxy.ndim
:The
ndim
property is faster for checking the number of dimensions compared to usinglen(xyxy.shape)
.Replaced
np.full
withnp.empty
for Result Initialization.Using
np.empty
avoids unnecessary initialization and saves memory operations. The subsequent lines will fill the array completely.Removed Redundant Assignment.
Eliminated the default assignment of
ObjectSizeCategory.ANY.value
for the result array since all its elements will be overwritten in subsequent assignments.These optimizations reduce unnecessary checks and memory operations, enhancing the overall performance of the function.
✅ Correctness verification report:
🌀 Generated Regression Tests Details