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.
A separate sub-project is introduced to benchmarking for Stage and each of its executors w.r.t. to the things that actors are capable of i.e. sending messages to other actors; and creating new actors.
To achieve the benchmark logic, I've implemented the
ask
method onActorRef
. I'm not entirely happy with its implementation right now, as it exposes theReceiver
type to the caller. There's more work to do there; perhaps as a separate PR though. I'm thinking that theask
method should beasync
instead, but it would also require another method on theReceive
type to actually receive. More thinking required.Prelim benchmarks show Crossbeam/Executors to be significantly faster:
In summary, Crossbeam/Executors tends to perform 2.5 to 3 times faster than Tokio so far, and unbounded channels slightly performing bounded ones across both.