Actor模型中消息传递的性能

时间:2010-07-28 22:24:21

标签: performance scala benchmarking actor actor-model

我已经看过按照演员的方式完成的Actor模型实现的基准测试。例如,Akka actor非常轻量级(每个actor 600个字节),并且可以创建数百万个。但是,我从未在消息传递吞吐量方面看到过基准测试。

例如,给定一些演员,每秒钟之间可以传递多少条消息?

有没有人有这种性能基准的链接(就消息传递吞吐量而言)?

2 个答案:

答案 0 :(得分:3)

Here

中实施的基准
  • Akka 0.8.1(Scala)
  • Scala Actors
  • Jetlang(Java)

另请参阅Azul Vega 1 + Scala actorAzul Fast Bytecodes for Funny Languages以及this paper

答案 1 :(得分:0)

当我使用围绕我的模型实现构建的这个简单的actor运行性能测试时,它每秒吞吐量为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字节。 :(