⚡️ Speed up _determine_input_key()
by 11% in libs/langchain/langchain/smith/evaluation/runner_utils.py
#26
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.
📄
_determine_input_key()
inlibs/langchain/langchain/smith/evaluation/runner_utils.py
📈 Performance went up by
11%
(0.11x
faster)⏱️ Runtime went down from
680.60μs
to612.61μs
Explanation and details
(click to show)
Here is your optimized python code. The code tries to reduce unnecessary checks, made the conditions more efficient, and reduced calls to len() function.
This code runs faster because it removes unnecessary checks and reassignments. It first directly checks the value of config.input_key, if it exists it assigns it to input_key else None, completely eliminating the initial conditional statement. Then it checks if run_inputs exists, if true it checks and logs the warnings accordingly. It also uses elif instead of separate if statements, which is important because if the first if condition is true, Python won't check the other elif conditions. Also, by storing len(run_inputs) in a variable, the code does not have to compute the length twice, which can be computationally expensive for large lists. Therefore, the optimized code provides the same functionality with a marked increase in speed.
Correctness verification
The new optimized code was tested for correctness. The results are listed below.
✅ 0 Passed − ⚙️ Existing Unit Tests
✅ 0 Passed − 🎨 Inspired Regression Tests
✅ 9 Passed − 🌀 Generated Regression Tests
(click to show generated tests)