9 points par xguru 2021-02-13 | 1 commentaires | Partager sur WhatsApp
  • Temps de changement de contexte : tâche async 0,2µs vs thread noyau 1,7µs

→ Si le changement est causé par les E/S, cette différence de temps disparaît (1,7µs dans les deux cas)

→ Si la version thread est limitée à un seul cœur, l’avantage de l’asynchrone disparaît aussi (les performances deviennent presque identiques)

  • Création d’une nouvelle tâche : tâche async ~0,3µs vs thread noyau 17µs

  • Utilisation mémoire : tâche async quelques centaines d’octets vs thread noyau 20KiB (9,5KiB utilisateur, 10KiB noyau)

→ Ces chiffres concernent des tâches qui ne font presque rien ; en situation réelle, il faut davantage de mémoire

  • Il est facile de créer 25000 tâches async, mais sur un ordinateur portable 4 cœurs / 32GiB, 8000 threads constituent le maximum

1 commentaires

 
xguru 2021-02-13

Un benchmark mené pour dire qu’au lieu d’affirmer simplement que l’asynchrone est bien meilleur en performances/efficacité, il faut aussi comprendre un peu ce qui se passe en interne.

En réalité, le développement asynchrone comporte aussi beaucoup de bugs et d’autres difficultés, donc il faut rester prudent.