9 pontos por xguru 2021-02-13 | 1 comentários | Compartilhar no WhatsApp
  • Tempo de troca de contexto: tarefa assíncrona 0,2µs vs thread do kernel 1,7µs

→ Se a troca acontecer por causa de I/O, essa diferença de tempo desaparece (ambos 1,7µs)

→ Se a versão com threads for limitada a usar apenas um único núcleo, a vantagem do assíncrono também desaparece (ficam quase iguais)

  • Criação de nova tarefa: tarefa assíncrona ~0,3µs vs thread do kernel 17µs

  • Uso de memória: tarefa assíncrona algumas centenas de bytes vs thread do kernel 20KiB (9,5KiB usuário, 10KiB kernel)

→ Isso considera tarefas que quase não fazem nada; em operação real, será necessário mais

  • É fácil criar 250 mil tarefas assíncronas, mas em um notebook com 4 núcleos/32GiB, 80 mil threads é o limite máximo

1 comentários

 
xguru 2021-02-13

Um benchmark feito para mostrar que não basta dizer simplesmente que assíncrono é muito melhor em desempenho/eficiência; é preciso entender um pouco do que acontece por dentro antes de falar.

Na prática, o desenvolvimento assíncrono também tem muitos bugs e pontos mais difíceis, então é preciso ter cuidado.