core: avoid async op future reboxing to bundle PromiseId #10123
Merged
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.
This is another op-layer optimization, it reduces the baseline overhead of async ops by ~10%.
It removes an extra alloc/free per opcall that happened due to "reboxing" the future to insert the
PromiseId
. ThePromiseId
is now passed as a field ofOpPayload
so the async OpFn wrappers can insert it when mapping the future result.I have another experiment in progress, but wanted to land this since it's simple and 10% is a respectable gain even if it's not "game changing".
Benches