2010-07-28 10 views
5

He visto puntos de referencia de las implementaciones de modelos de Actor en términos de sus actores. Por ejemplo, los actores Akka son muy livianos (600 bytes por actor) y se pueden crear millones de ellos. Sin embargo, nunca he visto un punto de referencia hecho en términos de rendimiento de transmisión de mensajes.Rendimiento de transmisión de mensajes en Actor modelo

Por ejemplo, dado el número de actores, ¿cuántos mensajes pueden pasar entre ellos por segundo?

¿Alguien tiene un enlace a dicho punto de referencia de rendimiento (en términos de rendimiento de paso de mensajes)?

Respuesta

0

Cuando realicé una prueba de rendimiento con este simple actor construido alrededor de mi implementación del modelo, tenía un mensaje de 444773.906 por segundo. Claramente es una prueba artificial, pero te da una idea general de cómo podría funcionar en la naturaleza.

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();   
} 

Tamaño

estalló el perfilador y parece que mi aplicación es 944 bytes. :(

+0

Creo que esta pregunta sigue siendo muy inte descansando Si alguien tiene algo con lo que contribuir ... o si hay alguna herramienta para controlar Scala, el rendimiento de Akka. – jimakos17

Cuestiones relacionadas