77
1
using Akka.Actor;
2
using Akka.Configuration;
3
using System.Threading.Tasks;
4
using System;
5
6
public class Program
7
{
8
public static void Main()
9
{
10
// this configuration is required ony in .NET Fiddle
11
var config = ConfigurationFactory.ParseString(@"akka.actor.default-dispatcher { type = ""Akka.Dispatch.TaskDispatcherConfigurator""}");
12
13
var system = ActorSystem.Create("Sample", config);
14
15
var actor = system.ActorOf<FreeBusyActor>();
16
17
Task.Run(async () =>
18
{
19
20
for (var i = 0; i < 10; i++)
21
{
22
actor.Tell("get busy");
23
await Task.Delay(40);
24
}
Cached Result
OLD ALGORITHM START
-----START------
Id: 1
BatchSize: 3
Checking cache key: 2
Cache result: False
Checking cache key: 3
Cache result: False
Checking cache key: 4
Cache result: False
Checking cache key: 5
Cache result: False
Checking cache key: 6
Cache result: False
Result: 1,6,5
----------------
Total cache calls: 5
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache key: 2
Cache result: True
Checking cache key: 3
Cache result: False
Checking cache key: 4
Cache result: True
Checking cache key: 5
Cache result: False
Checking cache key: 6
Cache result: True
Result: 1,3,5
----------------
Total cache calls: 5
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache key: 2
Cache result: False
Checking cache key: 3
Cache result: True
Checking cache key: 4
Cache result: False
Checking cache key: 5
Cache result: True
Checking cache key: 6
Cache result: False
Result: 1,6,4
----------------
Total cache calls: 5
------END-------
OLD ALGORITHM END
NEW ALGORITHM NO BATCH CACHE START
-----START------
Id: 1
BatchSize: 3
Checking cache key: 6
Cache result: False
Checking cache key: 5
Cache result: False
Result: 1,6,5
----------------
Total cache calls: 2
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache key: 6
Cache result: True
Checking cache key: 5
Cache result: False
Checking cache key: 4
Cache result: True
Checking cache key: 3
Cache result: False
Result: 1,5,3
----------------
Total cache calls: 4
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache key: 6
Cache result: False
Checking cache key: 5
Cache result: True
Checking cache key: 4
Cache result: False
Result: 1,6,4
----------------
Total cache calls: 3
------END-------
NEW ALGORITHM NO BATCH CACHE END
NEW ALGORITHM BATCH CACHE START
-----START------
Id: 1
BatchSize: 3
Checking cache keys: 6,5,4
Cache result: False,False,False
Result: 1,6,5
----------------
Total cache calls: 1
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache keys: 6,5,4
Cache result: True,False,True
Checking cache keys: 3,2
Cache result: False,True
Result: 1,5,3
----------------
Total cache calls: 2
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache keys: 6,5,4
Cache result: False,True,False
Result: 1,6,4
----------------
Total cache calls: 1
------END-------
-----START------
Id: 1
BatchSize: 3
Result: 1,6,5
----------------
Total cache calls: 0
------END-------
NEW ALGORITHM BATCH CACHE END
-----START------
Id: 1
BatchSize: 3
Checking cache key: 2
Cache result: False
Checking cache key: 3
Cache result: False
Checking cache key: 4
Cache result: False
Checking cache key: 5
Cache result: False
Checking cache key: 6
Cache result: False
Result: 1,6,5
----------------
Total cache calls: 5
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache key: 2
Cache result: True
Checking cache key: 3
Cache result: False
Checking cache key: 4
Cache result: True
Checking cache key: 5
Cache result: False
Checking cache key: 6
Cache result: True
Result: 1,3,5
----------------
Total cache calls: 5
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache key: 2
Cache result: False
Checking cache key: 3
Cache result: True
Checking cache key: 4
Cache result: False
Checking cache key: 5
Cache result: True
Checking cache key: 6
Cache result: False
Result: 1,6,4
----------------
Total cache calls: 5
------END-------
OLD ALGORITHM END
NEW ALGORITHM NO BATCH CACHE START
-----START------
Id: 1
BatchSize: 3
Checking cache key: 6
Cache result: False
Checking cache key: 5
Cache result: False
Result: 1,6,5
----------------
Total cache calls: 2
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache key: 6
Cache result: True
Checking cache key: 5
Cache result: False
Checking cache key: 4
Cache result: True
Checking cache key: 3
Cache result: False
Result: 1,5,3
----------------
Total cache calls: 4
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache key: 6
Cache result: False
Checking cache key: 5
Cache result: True
Checking cache key: 4
Cache result: False
Result: 1,6,4
----------------
Total cache calls: 3
------END-------
NEW ALGORITHM NO BATCH CACHE END
NEW ALGORITHM BATCH CACHE START
-----START------
Id: 1
BatchSize: 3
Checking cache keys: 6,5,4
Cache result: False,False,False
Result: 1,6,5
----------------
Total cache calls: 1
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache keys: 6,5,4
Cache result: True,False,True
Checking cache keys: 3,2
Cache result: False,True
Result: 1,5,3
----------------
Total cache calls: 2
------END-------
-----START------
Id: 1
BatchSize: 3
Checking cache keys: 6,5,4
Cache result: False,True,False
Result: 1,6,4
----------------
Total cache calls: 1
------END-------
-----START------
Id: 1
BatchSize: 3
Result: 1,6,5
----------------
Total cache calls: 0
------END-------
NEW ALGORITHM BATCH CACHE END