Rust로 구현한 Tail-Call 인터프리터: 벤치마크로 알아본 최적의 디스패치 전략
Tail-Call Interpreters in Rust – Jimmy Ostler
Jimmy Ostler가 자신의 ternary 프로젝트를 개선하기 위해 VM 디스패치의 다양한 스타일을 Rust로 구현하고 벤치마크한 실험을 소개합니다. Noel Welsh의 Scala 기반 글에서 영감을 받아, 스택 머신에서 switch, 서브루틴, 간접, 직접 디스패치를 구현하고 성능을 비교합니다. 특히 Rust의 `become` 키워드를 활용한 tail-call 최적화와 `Fn` 트레이트를 이용한 동적 디스패치의 장단점을 분석하며, 직접 디스패치가 가장 좋은 성능을 보였다고 설명합니다.
이 기법은 전용 dispatch 함수가 전혀 없어서, 계산을 시작하려면 명령어 포인터 위치의 명령어를 호출하기만 하면 됩니다.