벤치마크 코드를 보면 Rust와 Python의 경우 실제로는 concurrent task를 만드는 것이 아니라, 비동기적이긴 하지만 다른 task와 parallel하게 돌지는 못하는 future 객체만 생성하는 것으로 보입니다. 아마 C#도 비슷한 케이스가 아닐까 싶네요. 반면 Go 코드는 스스로 call stack 등을 갖는 task인 goroutine을 생성하게 되어 있는데, 100만 개의 케이스에서 Go의 메모리 사용량이 유독 튀어 보이는 원인은 여기에 있지 않나 싶습니다.
벤치마크 코드를 보면 Rust와 Python의 경우 실제로는 concurrent task를 만드는 것이 아니라, 비동기적이긴 하지만 다른 task와 parallel하게 돌지는 못하는 future 객체만 생성하는 것으로 보입니다. 아마 C#도 비슷한 케이스가 아닐까 싶네요. 반면 Go 코드는 스스로 call stack 등을 갖는 task인 goroutine을 생성하게 되어 있는데, 100만 개의 케이스에서 Go의 메모리 사용량이 유독 튀어 보이는 원인은 여기에 있지 않나 싶습니다.