モデルの実装を中心に構築されたこの単純なアクターでパフォーマンス テストを実行したところ、毎秒 444773.906 メッセージのスループットが得られました。明らかにこれは不自然なテストですが、実際にどのように機能するかについての一般的なアイデアを提供します.
private class TestActor : Actor<int, bool>
{
protected override void ProcessMessage(AsyncReplyPackage<int, bool> package)
{
package.ReplyChannel.Send(package.Message > 2000000);
}
}
static void Main(string[] args)
{
var r = false;
using (var ts = new TestActor())
using (var rc = new AsyncChannel<bool>())
{
ts.PostWithAsyncReply(0, rc);
r = rc.Receive();
var count = 3000000;
var sw = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
ts.PostWithAsyncReply(i, rc);
r = rc.Receive();
}
Console.WriteLine(sw.Elapsed);
}
Console.WriteLine(r);
Console.ReadLine();
}
サイズ
プロファイラーを壊したところ、私の実装は 944 バイトのようです。:(