저는 Scheme과 비슷한 언어 용 컴파일러를 개발 중이며 Dybvig의 논문을 읽고 있습니다. 그것에서 그는 콜 프레임을 힙이 아닌 스택에 할당함으로써 성능 향상의 대부분을 달성했다고 말합니다. 클로저와 연속성이있는 상태에서 실제로이 작업을 수행하려면 여러 가지 트릭이 필요합니다.스택 기반 Scheme보다 힙 기반 Scheme을 느리게 만드는 이유는 무엇입니까?
제 질문은이 성능 향상이 어디에서 발생했는지입니다. 우리가 가비지 컬렉터에 부담을 덜주기 때문에 순수한 것입니까?
다른 방식으로 말하자면 : 무한 메모리가 있다고 가정하면, 할당 된 콜 프레임을 쌓아 올리면 여전히 힙 할당 된 콜 프레임보다 빠릅니까?
"가비지 수집기"에 대해 언급합니다. 구현 언어는 무엇입니까? –
구현 언어는 C입니다.하지만 컴파일러 코드 자체의 성능 향상이 아니라 컴파일 된 코드의 성능 향상이라는 것을 분명히해야합니다. –
정말로 대답이지만 (a) 힙을 다루는 것은 스캔이 필요하기 때문에 더 많은 시간이 걸립니다 (스택과 같이 선형이 아닙니다). (b) 실제로 모든 CPU 아키텍처는 가능한 한 빨리 스택 액세스를 만드는 데 중점을두고 있으며 힙을 사용하지는 않습니다. –