-
-
Notifications
You must be signed in to change notification settings - Fork 29.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Faster positional arguments parsing in PyArg_ParseTupleAndKeywords #73215
Comments
Proposed patch speeds up parsing positional arguments in PyArg_ParseTupleAndKeywords(). $ ./python -m perf timeit "1 .to_bytes(1, 'little', signed=False)"
Unpatched: Median +- std dev: 2.01 us +- 0.09 us
Patched: Median +- std dev: 1.23 us +- 0.03 us Currently names of all passed positional argument are looked up in the kwargs dictionary for checking if the argument is passed as positional and keyword argument. With the patch this is checked only if there are unhandled keyword arguments after parsing keyword arguments that don't passed as positional arguments. The same optimization also is applied to _PyArg_ParseTupleAndKeywordsFast() and like, but the effect is much smaller. The patch also includes tiny refactoring. |
LGTM |
New changeset a36e60c5fee0 by Victor Stinner in branch 'default': |
Oh, I missed this issue. Since I made minor cleanup recently, I took the liberty of rebasing your patch. I also pushed your "keywords => kwargs" change, just to make the patch simpler to review. |
Oh wow, impressive speedup! As usual, good job Serhiy ;-) PyArg_ParseTupleAndKeywords-faster-positional-args-parse-2.patch: LGTM! Can you please push it? |
LGTM again. |
New changeset a8563ef0eb8a by Serhiy Storchaka in branch 'default': |
Thank you for your reviews Inada and Victor. Thank you for rebasing the patch Victor. I were going first to try an alternative patch, maybe less efficient, but allowing to share more code. But since the code is changed so fast, it is better to commit the ready patch. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: