Pregunta

¿Cuáles son los principales gastos generales de funcionamiento (copia gc / pila ...) del nuevo marco Mono continuaciones / Tasklet?

¿Cómo funciona esta sobrecarga (rendimiento corrutina / rendimiento bruto) en comparación con otros marcos como Lua Coroutine y Python sin pérdida de velocidad?

En Mono se añadirá apoyo 2.6 de continuación / corrutinas. He construido una versión SVN y se utiliza el código siguiente para estimar sus gastos generales

static void Main()
{
    Console.WriteLine("starting.,..");
    for(int i = 0; i < 10000; i++)
    {
        MicroThread t1 = new MicroThread(Run1);
        t1.Start();
    }
    Scheduler.Run();
    Console.WriteLine("starting raw loop.,..");
    int x = 2;
    for (int i = 0; i < 10000 * 400; i++ )
    {
        x++;
    }
    Console.WriteLine("1finished.,.. " + x.ToString());
    Console.ReadLine();
}

static void Run1()
{
    for (int y = 0; y < 400; y++)
    {
        MicroThread.CurrentThread.Yield();
    }
}

El MicroThread / programador carrera tomó alrededor de 1,5-2 segundos, mientras que el bucle cruda es casi instantenously. Si bien se espera una sobrecarga, esto parece un poco mucho.

¿Cuáles son los principales gastos generales de funcionamiento del nuevo marco Mono continuaciones / Tasklet? ¿Cómo esta sobrecarga (rendimiento corrutina / rendimiento bruto) en comparación con otros marcos, como Lua Coroutine y Python sin pérdida de velocidad?

Gracias

¿Fue útil?

Solución

Si no conté mal, su código no más de 2 millones de rendimientos por segundo, que deben ser roughtly en el mismo estadio de béisbol como pitón sin pérdida de velocidad.

Teniendo en cuenta que por lo general mono ejecutar el código de la aplicación real de 10 a 100 veces más rápido que el pitón, el rendimiento es probable que va a ser muy bueno a menos que todo el código que hace es el rendimiento sin tener que hacer ningún trabajo real, que no creo es muy útil:)

Otros consejos

Dado que hay muy pocas personas con la experiencia necesaria para responder a esto, es posible que tenga que ir a ellos y preguntar en la lista de mono-devel.

También puede buscar en los archivos para ver la discusión en torno Monoco / tasklet cuando se presentó:

http://lists.ximian.com /pipermail/mono-devel-list/2009-April/031680.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top