Closed
Description
We can execute one less opcode in every iteration (except for the first) of every for-loop by changing from
GET_ITER
top:
FOR_ITER
[body]
JUMP_BACKWARDS(top)
cleanup:
end:
to
GET_ITER
JUMP_FORWARD(bottom)
body:
[body]
bottom:
FOR_END(body)
cleanup:
end:
This was suggested by @markshannon here, but it appears to be similar in spirit to Loop Inversion.
There seems to be a small (on the order of 1%) benefit, but I imagine the benefit will be magnified after any specialization.
Metadata
Metadata
Assignees
Labels
only security fixesonly security fixes(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)Performance or resource usagePerformance or resource usage