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
fast tuple[index] by inlining on BINARY_SUBSCR #44423
Comments
Hello. I noticed there is speed difference between a = [0,] # list
a[0] # fast and a = (0,) # tuple
a[0] # slow while solving ICPC puzzle with Python. I thought this is wierd because, indeed tuple is readonly, there is no conceptual difference between list and tuple when 'extract' item from them. After investigation, I found this difference comes from the shortcut for list on ceval.c (BINARY_SUBSCR). Is it valuable to put shortcut for tuple too? I'll attach the patch for release-maint25 branch. Thank you. |
It would be helpful to get some statistics on how often this occurs: of all case of BINARY_SUBSCR, how man refer to tuples, how many to lists, and how many to other objects? To get some data, you can measure a run of a test suite, or a run of IDLE, or of compileall. |
I recommend against this. Any additional specialization code will necessarily slow down other cases handled by PyObject_GetItem. So, the merits of speeding-up tuple indexing need to be weighed against the costs (slowing down other code and the excess loading of ceval.c with specialization code). Also, I reject the premise that there is no conceptual difference between list and tuple indexing. The former is a primary use case for lists and the latter is only incidental to tuple use cases (see the endless discussions on python-dev and comp.lang.python about why tuples are not to be regarded as immutable lists and in fact have a different intended set of uses). |
Sorry, I want to withdraw this. Python/lib/test/testall.py The ratio of tuple seems relatively low. |
Thank you, rhettinger. I'm interested in it. I'll see them. |
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: