Sobrecarga de Mono Tasklet / Co-Rotinas
-
18-09-2019 - |
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
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