Comparación del tiempo de cambio de contexto y uso de memoria entre Rust Async y los hilos de Linux
(github.com)- Tiempo de cambio de contexto: tarea async 0.2µs vs hilo del kernel 1.7µs
→ Si el cambio ocurre por I/O, esta diferencia de tiempo desaparece (ambos 1.7µs)
→ Si la versión con hilos se limita a usar solo un núcleo, la ventaja del modelo asíncrono también desaparece (quedan casi iguales)
-
Creación de nuevas tareas: tarea asíncrona ~0.3µs vs hilo del kernel 17µs
-
Uso de memoria: tarea asíncrona unos cientos de bytes vs hilo del kernel 20KiB (9.5KiB usuario, 10KiB kernel)
→ Esto se basa en tareas que casi no hacen nada; en funcionamiento real se necesita más
- Es fácil crear 250 mil tareas asíncronas, pero en una laptop de 4 núcleos/32GiB, el máximo es 80 mil hilos
1 comentarios
No se trata solo de decir que lo asíncrono es mucho mejor en rendimiento/eficiencia; este benchmark se hizo para hablar del tema entendiendo un poco lo que hay por dentro.
En realidad, el desarrollo asíncrono también tiene muchos bugs y puntos más difíciles, así que hay que tener cuidado.