gpt4 book ai didi

c# - Akka.net actor 大小

转载 作者:太空狗 更新时间:2023-10-30 00:10:26 24 4
gpt4 key购买 nike

我们看到每个 Akka.net actors 大约有 2900 字节。 (Akka.net v0.6.1.0)

这是 Akka.net 中每个 Actor 的大概大小吗?

程序片段

ActorSystem actor_system = ActorSystem.Create("myActor");//create an actor

var greeter = actor_system.ActorOf<GreetingActor>("greeter");
InternalActorRef[] greeterArray = new InternalActorRef[100000];

for (int i = 0; i < greeterArray.Length; i++)
{
greeterArray[i] = actor_system.ActorOf<GreetingActor>("greeter" + i);
Console.WriteLine("Creating Actor number " + i);
}

迎宾员

using Akka;
using Akka.Remote;
using Akka.slf4net;
using Akka.Actor;

namespace Akka_NET_test
{
//Create the actor class
public class GreetingActor : UntypedActor
{

protected override void OnReceive(object message)
{

message
.Match()
//this can be done with "if (message is Greet)" if you prefer
.With<Greet>(m => Console.WriteLine("Hello {0} from GreetingActor " + this.Self.ToString(), m.myMsg));
}
}
}

问候

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Akka;
using Akka.Remote;
using Akka.slf4net;

namespace Akka_NET_test
{
//Create a message type that your actor will respond to
public class Greet
{
public string myMsg { get; set; }
}
}

据报告,Akka jvm 的大小约为 400 字节/actor,Erlang 的大小约为 300 字节/进程。

在 Akka.net 的 CLR 上启动 100,000 个 actors 似乎每个大约 2900 字节。

这大致正确吗?

提前致谢!

最佳答案

Akka.NET 的重量可能比当前阶段需要的重量要重一些。

例如:

  • ActorPath 中的每个元素目前都有其前缀元素的完整副本。所以至少有一些冗余字节作为字符串和列表就在那里。(我们有一个任务来重构这个)

  • ActorCell 及其相关类都使用并发字典来存储子 actorref,这在内存方面效率低下,我们正在努力移植 scala childcontainer 特性。

    <

因此,随着我们接近 1.0 版本,预计内存消耗会下降。

您使用的是什么分析器?例如如果您使用的是 Windows 任务管理器,您肯定会看到不正确的数字,这是由于 .NET 积极的内存预分配。

另外,看看新的 ReceiveActor http://akkadotnet.github.io/wiki/ReceiveActor这不使用 message.Match().With(...) 表示法,因此,由于不为每个接收到的消息分配任何模式匹配对象,因此 GC 会更轻松。

关于c# - Akka.net actor 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com