Domanda

Quali sono i principali costi generali in termini di prestazioni (copia gc/stack...) del nuovo framework Mono Continuations/Tasklet?

Come si confronta questo sovraccarico (prestazioni coroutine/prestazioni grezze) con altri framework come Lua Coroutine e Stackless Python?

In Mono 2.6 verrà aggiunto il supporto per continuazione/coroutine.Ho creato una versione svn e ho utilizzato il seguente codice per stimarne il sovraccarico

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

L'esecuzione del microthread/scheduler ha richiesto circa 1,5-2 secondi, mentre il loop grezzo è quasi istantaneo.Anche se è previsto un sovraccarico, questo sembra un po' eccessivo.

Quali sono i principali costi generali in termini di prestazioni del nuovo framework Mono Continuations/Tasklet?Come si confronta questo sovraccarico (prestazioni coroutine/prestazioni grezze) con altri framework come Lua Coroutine e Stackless Python?

Grazie

È stato utile?

Soluzione

Se non ho contato male, il tuo codice fa più di 2 milioni di rendimenti al secondo, che dovrebbero essere più o meno allo stesso livello di Python stackless.

Considerando che mono di solito eseguirà il codice dell'applicazione reale da 10 a 100 volte più velocemente di Python, le prestazioni saranno probabilmente molto buone a meno che tutto ciò che il tuo codice fa è produrre senza mai fare alcun lavoro reale, il che non penso sia molto utile :)

Altri suggerimenti

Dato che ci sono pochissime persone con le competenze per rispondere a questa domanda, potresti dover andare da loro e chiedere nell'elenco mono-sviluppo.

Puoi anche consultare gli archivi per vedere la discussione su monoco/tasklet quando è stato introdotto:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top