首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka.net演员尺寸

Akka.net演员尺寸
EN

Stack Overflow用户
提问于 2014-08-07 15:39:52
回答 2查看 2.3K关注 0票数 4

我们看到的Akka.net演员每个大约2900字节。(Akka.net v0.6.1.0)

这是Akka.net中每个参与者的大致大小吗?

程序片段

代码语言:javascript
复制
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);
        }

Greeter

代码语言:javascript
复制
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));
        }
    }
}

问候

代码语言:javascript
复制
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个字节/参与者,Erlang为300个字节/进程。

在Akka.net中,在CLR上旋转10万个参与者似乎每个大约有2900字节。

差不多是对的吗?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-07 16:20:19

Akka.NET的重量可能比目前所需要的要重一些。

例如:

  • 当前,ActorPath中的每个元素都有其前缀元素的完整副本。因此,至少有一些多余的字节作为字符串和列表在那里进行。(我们有一项任务要重构这个)
  • ActorCell和它的相关类都使用并发字典来存储子动作参考,这将是无效的记忆,我们正在移植scala的子容器特性。

因此,当我们接近1.0版本时,内存消耗就会下降。

你用了什么剖面仪?例如,如果您使用的是windows任务管理器,您肯定会看到不正确的数字du到.NET对内存的积极预分配。

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

票数 9
EN

Stack Overflow用户

发布于 2015-07-15 16:27:54

演员的大小现在是400字节,也就是可与Erlang相比,Erlang是300-400字节。

来自www.getakka.net的报价

在一台机器上高性能的5000万毫希/秒。内存占用较小;~每GB堆有250万个参与者。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25186650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档