Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Double wildcard implementation for ActorSelection #4375

Merged
merged 17 commits into from
Oct 30, 2020

Conversation

Arkatufus
Copy link
Contributor

Double wildcard (**) selection feature for ActorSelection.
example:
Sys.ActorSelection("/user/a/b2/**") will select all children under "user/a/b2" recursively.

Copy link
Member

@Aaronontheweb Aaronontheweb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm going to need to run the ActorSelection benchmarks on this before we merge it

@Arkatufus
Copy link
Contributor Author

right-o

@IgorFedchenko
Copy link
Contributor

For whatever reason, could not make NBench to produce markdown report... But I can paste results from console output.

Before this PR
--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+New_ActorSelection_on_new_actor_throughput ---------------
Tests the message delivery throughput of NEW ActorSelections to NEW actors
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 31 604,00 operations, Average: 31 604,00 operations, Min: 31 604,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 41 210,49 operations, Average / s: 36 843,66 operations, Min / s: 33 123,27 operations, StdDev / s: 2 764,03 operations

--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+Reused_ActorSelection_on_pre_existing_actor_throughput ---------------
Tests the message delivery throughput of REUSABLE ActorSelections to PRE-EXISTING actors
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 10 000,00 operations, Average: 10 000,00 operations, Min: 10 000,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 1 195 857,55 operations, Average / s: 1 057 097,16 operations, Min / s: 806 848,53 operations, StdDev / s: 119 098,18 operations

--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+New_ActorSelection_on_pre_existing_actor_throughput ---------------
Tests the message delivery throughput of NEW ActorSelections to PRE-EXISTING actors. This is really a stress test.
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 10 000,00 operations, Average: 10 000,00 operations, Min: 10 000,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 793 342,27 operations, Average / s: 750 725,87 operations, Min / s: 695 497,35 operations, StdDev / s: 30 379,84 operations

--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+ActorSelection_ResolveOne_throughput ---------------
Tests the throughput of resolving an ActorSelection on a pre-existing actor via ResolveOne
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 69 186,00 operations, Average: 69 186,00 operations, Min: 69 186,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 69 071,30 operations, Average / s: 68 350,42 operations, Min / s: 67 063,86 operations, StdDev / s: 646,94 operations

--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+ActorSelection_ResolveOne_stress_test ---------------
Continuously creates actors and attempts to resolve them immediately. Used to surface race conditions.
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 19 653,00 operations, Average: 19 653,00 operations, Min: 19 653,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 23 480,54 operations, Average / s: 21 733,80 operations, Min / s: 19 168,87 operations, StdDev / s: 1 549,65 operations
After this PR
--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+New_ActorSelection_on_new_actor_throughput ---------------
Tests the message delivery throughput of NEW ActorSelections to NEW actors
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 24 382,00 operations, Average: 24 382,00 operations, Min: 24 382,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 39 570,63 operations, Average / s: 36 495,06 operations, Min / s: 24 043,77 operations, StdDev / s: 4 621,72 operations

--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+Reused_ActorSelection_on_pre_existing_actor_throughput ---------------
Tests the message delivery throughput of REUSABLE ActorSelections to PRE-EXISTING actors
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 10 000,00 operations, Average: 10 000,00 operations, Min: 10 000,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 1 232 118,87 operations, Average / s: 1 168 783,35 operations, Min / s: 1 005 206,97 operations, StdDev / s: 59 018,05 operations

--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+New_ActorSelection_on_pre_existing_actor_throughput ---------------
Tests the message delivery throughput of NEW ActorSelections to PRE-EXISTING actors. This is really a stress test.
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 10 000,00 operations, Average: 10 000,00 operations, Min: 10 000,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 781 873,06 operations, Average / s: 729 128,97 operations, Min / s: 611 755,49 operations, StdDev / s: 52 683,60 operations

--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+ActorSelection_ResolveOne_throughput ---------------
Tests the throughput of resolving an ActorSelection on a pre-existing actor via ResolveOne
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 67 923,00 operations, Average: 67 923,00 operations, Min: 67 923,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 66 471,47 operations, Average / s: 64 425,78 operations, Min / s: 60 512,38 operations, StdDev / s: 2 209,63 operations

--------------- RESULTS: Akka.Tests.Performance.Actor.ActorSelectionSpecs+ActorSelection_ResolveOne_stress_test ---------------
Continuously creates actors and attempts to resolve them immediately. Used to surface race conditions.
--------------- DATA ---------------
[Counter] ActorSelectionOperationCompleted: Max: 19 308,00 operations, Average: 19 308,00 operations, Min: 19 308,00 operations, StdDev: 0,00 operations
[Counter] ActorSelectionOperationCompleted: Max / s: 25 251,93 operations, Average / s: 22 082,34 operations, Min / s: 19 677,88 operations, StdDev / s: 1 896,00 operations

@Aaronontheweb
Copy link
Member

Thanks @IgorFedchenko - looks safe to merge. Performance numbers look about the same before and after.

@Aaronontheweb
Copy link
Member

@IgorFedchenko NBench markdown usually gets written out to the file system rather than the console

@IgorFedchenko
Copy link
Contributor

@IgorFedchenko NBench markdown usually gets written out to the file system rather than the console

Yeah, I was trying to find any files, or specify output directory to look there - but could not get anything generated...

@Aaronontheweb Aaronontheweb merged commit 59e149d into akkadotnet:dev Oct 30, 2020
@Aaronontheweb Aaronontheweb added this to the 1.4.11 milestone Oct 30, 2020
@Arkatufus Arkatufus deleted the DoubleWildcard branch March 8, 2021 13:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants