Comparaison du temps de changement de contexte et de l’utilisation mémoire entre Rust Async et les threads Linux
(github.com)- 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
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.