GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||
GeezerVison is showing github.com — gh-134584: Eliminate redundant refcounting from `_CALL_TYPE_1` by tomasr8 · Pull Request #135818 · python/cpython Conversation
|
|
Thanks for the review! I'll continue working on it tomorrow (Monday) 🙂 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I just merged #135761 in. Sorry but you'll have to merge the changes in, as I did not ultimately add |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
184d8f1 to
85ab405
Compare
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Yay, thank you!
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I will do some microbenchmarking to see if this does anything. Give me a sec. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
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! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@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 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Awesome stuff! And a pretty nice speedup for a relatively simple optimization too! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| } | ||
|
|
||
| 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.
The reason will be displayed to describe this comment to others. Learn more.
This shouldn't be here, right? Because we're leaving arg on the stack in a?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
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! :)
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
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 :) |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Just one change, otherwise LGTM!
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
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! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Thanks for the review, Ken! Happy holidays to you as well! :) |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.