Rust Async 와 Linux 쓰레드 컨텍스트 스위칭 시간 및 메모리 사용량 비교
(github.com)- 컨텍스트 스위칭 시간 : Async Task 0.2µs vs Kernel Thread 1.7µs
ㅤ→ 스위칭이 I/O때문에 일어나면 이 시간 차이는 같아짐 (둘다 1.7µs)
ㅤ→ 쓰레드 버전을 싱글코어만 쓰게하면 비동기의 이점도 사라짐(거의 비슷해짐)
- 새 태스크 생성 : 비동기 태스크 ~0.3µs vs 커널쓰레드 17µs
- 메모리 사용 : 비동기 태스크 몇백 바이트 vs 커널쓰레드 20KiB(9.5KiB 유저, 10KiB 커널)
ㅤ→ 거의 아무일도 하지 않는 태스크 기준이며, 실제 동작한다면 더 많이 필요
- 25만개의 비동기 태스크는 쉽게 생성 가능하지만, 4코어/32GiB 노트북에서는 8만개의 쓰레드가 최대치
단순히 비동기가 훨씬 성능/효율상에서 좋다고만 말하지 말고 내부를 좀 알고 얘기하자고 진행한 벤치마크.
사실 비동기 개발은 버그도 많고, 더 어려운 점들이 있어서 주의가 필요합니다.