⚡️ Speed up method PathDeviationAnalyticsBlockV2._compute_distance by 33%
#635
+1
−1
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.
📄 33% (0.33x) speedup for
PathDeviationAnalyticsBlockV2._compute_distanceininference/core/workflows/core_steps/analytics/path_deviation/v2.py⏱️ Runtime :
531 microseconds→399 microseconds(best of5runs)📝 Explanation and details
The optimization replaces the manual Euclidean distance calculation
np.sqrt(np.sum((point1 - point2) ** 2))withnp.linalg.norm(point1 - point2), achieving a 32% speedup.Key optimization:
linalg.norm()is significantly faster than the manual sqrt/sum approach because it uses optimized BLAS routines internally and avoids intermediate array allocations that occur with(point1 - point2) ** 2followed bynp.sum().Why this works:
np.linalg.norm()computes the L2 norm directly in optimized C code, eliminating these intermediate stepsTest case performance:
The optimization preserves all functionality while leveraging NumPy's optimized linear algebra routines for better performance.
✅ Correctness verification report:
🌀 Generated Regression Tests and Runtime
To edit these changes
git checkout codeflash/optimize-PathDeviationAnalyticsBlockV2._compute_distance-mhby7lccand push.