Pergunta

Quais são as principais despesas gerais de desempenho (gc / pilha copiar ...) do novo quadro Mono Continuations / Tasklet?

Como é que essa sobrecarga (performance coroutine / desempenho bruto) comparar com outras estruturas, como Lua co-rotina e python stackless?

será adicionado em mono 2,6 continuação / suporte co-rotinas. Eu construí uma versão svn e usado o seguinte código para estimar sua sobrecarga

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

O MicroThread / scheduler prazo levou cerca de 1,5-2 segundos, enquanto o loop crua é quase instantenously. Enquanto uma sobrecarga é esperado, isso parece um pouco demais.

Quais são as principais despesas gerais do novo quadro Mono Continuations / Tasklet desempenho? Como é que essa sobrecarga (performance coroutine / desempenho bruto) comparar com outras estruturas, como Lua co-rotina e python stackless?

Graças

Foi útil?

Solução

Se eu não contar errado, o seu código faz mais de 2 milhões de rendimentos por segundo, que deve ser roughtly no mesmo patamar como python stackless.

Considerando que a mono normalmente irá executar o código real aplicação de 10 a 100 vezes mais rápido do que python, o desempenho é provavelmente vai ser muito bom a menos que todo o seu código faz é rendimento sem nunca fazer qualquer trabalho real, que eu não acho que é muito útil:)

Outras dicas

Tendo em conta que existem muito poucas pessoas com os conhecimentos necessários para responder a isso, você pode ter que ir até eles e perguntar na lista de mono-devel.

Você também pode olhar para os arquivos para ver a discussão em torno monoco / tasklet quando foi introduzido:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top