Performance Actor模型中消息传递的性能
我已经看到了参与者模型实现的基准测试是根据他们的参与者来完成的。例如,Akka角色非常轻量级(每个角色600字节),可以创建数百万个角色。然而,我从未见过在消息传递吞吐量方面做过基准测试 例如,给定一定数量的参与者,他们之间每秒可以传递多少消息Performance Actor模型中消息传递的性能,performance,scala,benchmarking,actor,actor-model,Performance,Scala,Benchmarking,Actor,Actor Model,我已经看到了参与者模型实现的基准测试是根据他们的参与者来完成的。例如,Akka角色非常轻量级(每个角色600字节),可以创建数百万个角色。然而,我从未见过在消息传递吞吐量方面做过基准测试 例如,给定一定数量的参与者,他们之间每秒可以传递多少消息 有没有人可以链接到这样一个性能基准(就消息传递吞吐量而言)?当我使用这个围绕我的模型实现构建的简单参与者进行性能测试时,它的吞吐量为每秒444773.906条消息。很明显,这是一个人为的测试,但它能让你大致了解它在野外的表现 private class
有没有人可以链接到这样一个性能基准(就消息传递吞吐量而言)?当我使用这个围绕我的模型实现构建的简单参与者进行性能测试时,它的吞吐量为每秒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();
}
私有类测试者:参与者
{
受保护的覆盖无效ProcessMessage(AsyncReplyPackage包)
{
package.ReplyChannel.Send(package.Message>2000000);
}
}
静态void Main(字符串[]参数)
{
var r=假;
使用(var ts=newtestactor())
使用(var rc=new AsyncChannel())
{
ts.PostWithAsyncReply(0,rc);
r=rc.Receive();
var计数=3000000;
var sw=Stopwatch.StartNew();
for(int i=0;i
大小
我打开了探查器,看起来我的实现是944字节(是在
- Akka 0.8.1(斯卡拉)
- 斯卡拉演员
- 时差(爪哇)
另请参阅s和。请参阅中的自述文件。我认为这个问题仍然非常有趣。如果有人对此有所贡献……或者是否有任何工具可以监控scala、akka的性能。