我已经看到根据他们的演员完成的演员模型实现的基准。例如,Akka Actor 非常轻量级(每个 Actor 600 字节),可以创建数百万个。但是,我从未见过关于消息传递吞吐量的基准测试。
例如,给定一些参与者,每秒可以在他们之间传递多少条消息?
有没有人可以链接到这样的性能基准(就消息传递吞吐量而言)?
我已经看到根据他们的演员完成的演员模型实现的基准。例如,Akka Actor 非常轻量级(每个 Actor 600 字节),可以创建数百万个。但是,我从未见过关于消息传递吞吐量的基准测试。
例如,给定一些参与者,每秒可以在他们之间传递多少条消息?
有没有人可以链接到这样的性能基准(就消息传递吞吐量而言)?
这是一个在
另请参阅Azul Vega 1 + Scala actor和Azul Fast Bytecodes for Funny Languages和这篇论文。
当我使用这个围绕我的模型实现构建的简单参与者运行性能测试时,它每秒吞吐量为 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 字节。:(