⚡️ Speed up function is_valid_field_name
by 26% in pydantic/_internal/_fields.py
#13
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.
📄
is_valid_field_name()
inpydantic/_internal/_fields.py
📈 Performance improved by
26%
(0.26x
faster)⏱️ Runtime went down from
43.2 microseconds
to34.3 microseconds
Explanation and details
Your original function is already quite efficient for its purpose, as it makes use of Python's built-in
startswith
method which is implemented in C and is highly optimized. However, for the sake of minor optimizations, we can use the fact that strings are iterable, and we can check the first character directly.This slight change avoids the overhead of the method call by directly comparing the first character of the string. Note that this also handles the case where the string might be empty, as
name and
will returnFalse
for empty strings, preventing anIndexError
.Correctness verification
The new optimized code was tested for correctness. The results are listed below.
🔘 (none found) − ⚙️ Existing Unit Tests
✅ 30 Passed − 🌀 Generated Regression Tests
(click to show generated tests)
✅ 100 Passed − ⏪ Replay Tests