5

アクターに関して行われたアクター モデルの実装のベンチマークを見てきました。たとえば、Akka アクターは非常に軽量 (アクターあたり 600 バイト) であり、何百万ものアクターを作成できます。ただし、メッセージ パッシング スループットに関してベンチマークが行われたのを見たことがありません。

たとえば、ある数のアクターが与えられた場合、アクター間で 1 秒間にいくつのメッセージをやり取りできるでしょうか?

そのようなパフォーマンス ベンチマークへのリンクを持っている人はいますか (メッセージ パッシング スループットに関して)?

4

2 に答える 2

3

ここに実装されたベンチマークがあります

  • アッカ 0.8.1 (スカラ)
  • Scala アクター
  • Jetlang (Java)

また、Azul Vega 1 + Scala ActorおよびAzul Fast Bytecodes for Funny Languagesこのペーパーも参照してください。

于 2010-07-28T22:59:09.017 に答える
0

モデルの実装を中心に構築されたこの単純なアクターでパフォーマンス テストを実行したところ、毎秒 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 バイトのようです。:(

于 2010-07-28T22:37:14.943 に答える