GeezerVison is showing github.com — gh-143732: Specialize `__setitem__` dunder method for `STORE_SUBSCR` by johng · Pull Request #156033 · python/cpython
Conversation
johng
commented
Aug 19, 2026
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
This is precursuor for JIT improvements but also results in standard interpreter improvements due to specializing the bytecode.
This improves performance by about 5% on linux and macos micro benchmark
import pyperf
class Grid:
__slots__ = ("_cell",)
def __setitem__(self, key, value):
self._cell = value
def bench_store_subscr(loops):
obj = Grid()
range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
# 20 stores per loop; keep in sync with inner_loops below
obj[0] = 0; obj[0] = 0; obj[0] = 0; obj[0] = 0; obj[0] = 0
obj[0] = 0; obj[0] = 0; obj[0] = 0; obj[0] = 0; obj[0] = 0
obj[0] = 0; obj[0] = 0; obj[0] = 0; obj[0] = 0; obj[0] = 0
obj[0] = 0; obj[0] = 0; obj[0] = 0; obj[0] = 0; obj[0] = 0
return pyperf.perf_counter() - t0
if __name__ == "__main__":
runner = pyperf.Runner()
runner.metadata["description"] = "STORE_SUBSCR on an object with a Python __setitem__"
runner.bench_time_func("store_subscr_py_dunder", bench_store_subscr, inner_loops=20)
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This is precursuor for JIT improvements but also results in
standard improvements due to specializing the bytecode
|
This does not implement the specialization of STORE_SUBSCR for __setitem__ implemented in Python, as described in the issue. If the description in the issue is not clear, please ask for clarification (on the issue, not here)
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Let me review this in more detail, thanks!
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 28, 2026
Reviewers
markshannon
Awaiting requested review from markshannon
markshannon is a code owner
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
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.