Replace the local worker queues with st3's #115
Draft
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.
Fix #32. This PR replaces the fixed-sized local worker queues with st3's implementation. The implementation in the crate itself is largely the same, but st3's implementation should use considerably fewer atomic operations.
Performance wise, this seems to provide a major performance improvement across the board, particularly for single threaded cases, since pushing no longer requires any atomic operations, and popping only requires one. This does contain one major performance regression with
multi_thread/executor::spawn_one
, and it's unclear why that's the case. My current working theory is that the atomic-free push to local queues is putting the global queue under higher contention.This is a breaking change. It makes the future returned by
Executor::run
no longerSend
orSync
.