Perbandingan waktu context switching dan penggunaan memori antara Rust Async dan thread Linux
(github.com)- Waktu context switching: Async Task 0.2µs vs Kernel Thread 1.7µs
→ Jika switching terjadi karena I/O, perbedaan waktu ini menjadi sama (keduanya 1.7µs)
→ Jika versi thread dibatasi hanya memakai single-core, keunggulan async juga hilang (hampir mirip)
-
Pembuatan task baru: task async ~0.3µs vs thread kernel 17µs
-
Penggunaan memori: task async beberapa ratus byte vs thread kernel 20KiB (9.5KiB user, 10KiB kernel)
→ Ini berdasarkan task yang hampir tidak melakukan apa pun; jika benar-benar bekerja, akan memerlukan lebih banyak
- 250 ribu task async dapat dibuat dengan mudah, tetapi pada laptop 4-core/32GiB, 80 ribu thread adalah batas maksimum
1 komentar
Benchmark yang dilakukan agar kita tidak sekadar mengatakan bahwa async jauh lebih baik dari sisi performa/efisiensi, tetapi juga memahami sedikit cara kerjanya di dalam.
Sebenarnya pengembangan async juga punya banyak bug dan hal-hal yang lebih sulit, jadi perlu kehati-hatian.