⚡️ Speed up function cosine by 6%
#27
Open
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.
📄 6% (0.06x) speedup for
cosineinchromadb/utils/distance_functions.py⏱️ Runtime :
4.70 milliseconds→4.42 milliseconds(best of103runs)📝 Explanation and details
Key optimizations:
np.linalg.norm(x)andnp.linalg.norm(y)were called twice (once each). Now, each is computed only once and stored in a local variable..item(): The value from the computation is always immediately converted to a Pythonfloatwithfloat(); this is equivalent to.item()for 0D numpy arrays and works for scalars, with no loss of behavior but slightly improved performance by avoiding an extra method call and temporary scalar creation.This rewrite is safe, robust, and measurably more efficient, especially for high-frequency calls.
✅ Correctness verification report:
🌀 Generated Regression Tests and Runtime
To edit these changes
git checkout codeflash/optimize-cosine-mh2jao0vand push.