gh-134584: Eliminate redundant refcounting from _CALL_TYPE_1#135818
gh-134584: Eliminate redundant refcounting from _CALL_TYPE_1#135818Fidget-Spinner merged 13 commits intopython:mainfrom
_CALL_TYPE_1#135818Conversation
19ed708 to
184d8f1
Compare
Fidget-Spinner
left a comment
There was a problem hiding this comment.
Looks mostly good, just 2 comments that also explain the CI failure.
|
Thanks for the review! I'll continue working on it tomorrow (Monday) 🙂 |
|
I just merged #135761 in. Sorry but you'll have to merge the changes in, as I did not ultimately add |
184d8f1 to
85ab405
Compare
|
I will do some microbenchmarking to see if this does anything. Give me a sec. |
|
On this script: So it's slightly faster. However, note that this optimization won't fully pay off till we get #135465 merged. So let's wait for now till then. Thanks! Basically right now there's the extra cost of reading and writing to the stack due to the extra _POP_TOP. We're eliminating 1 reference count check in return. This seems to be barely worth it, but I crunched the numbers before and once the stack becomes registers, it becomes very worth it. If you're interested, I benchmarked my own branch with this (higher is better): So we should expect to see an around ~10% speedup once TOS caching is merged, and we start doing this! |
|
@tomasr8 congrats!!! I decreased the loop count, rebased your PR on top of Mark's TOS caching PR, and did a micro bench with the script above. So 8% improvement if we have TOS caching enabled on |
|
Awesome stuff! And a pretty nice speedup for a relatively simple optimization too! |
Python/bytecodes.c
Outdated
| } | ||
|
|
||
| tier2 op(_SWAP_CALL_ONE_LOAD_CONST_INLINE_BORROW, (ptr/4, callable, null, arg -- value, a)) { | ||
| PyStackRef_CLOSE(arg); |
There was a problem hiding this comment.
This shouldn't be here, right? Because we're leaving arg on the stack in a?
There was a problem hiding this comment.
Veery late response 😅 but I changed and renamed this op to _SHUFFLE_2_LOAD_CONST_INLINE_BORROW since it's analogous to the recently added _SHUFFLE_3_LOAD_CONST_INLINE_BORROW. This also resolves the issue with closing the ref! :)
|
I think it should be good now! Though I haven't yet caught up on the latest changes in the JIT so another pair of eyes would be nice :) |
Fidget-Spinner
left a comment
There was a problem hiding this comment.
Just one change, otherwise LGTM!
|
Windows failure is unrelated. Probably due to the other known bug in executor management. I'm merging this, and will be responsible for any breakages/reverts. Thank Tomas, and happy holidays! |
|
Thanks for the review, Ken! Happy holidays to you as well! :) |
Depends on #135761