첫 번째 근사에서는 프로그램이 기존 스택의 증가 및 축소 대신 CPS 스타일의 힙에서 실행되는 경우 메모리 액세스의 "지역성"에 차이가 있습니다. 또한 CPS는 힙에 배치 된 것처럼 보이는 로컬 데이터를 복구하려면 항상 GC가 필요합니다. 이러한 관찰만으로는 하드웨어가 오늘날보다 훨씬 단순했던 10 년 또는 20 년 전에 적절했을 것입니다.
나는 나 자신도 하드웨어 또는 컴파일러 전문가가 아니므로 두 번째 근사치 인 대략적인 이유가 있습니다. Isabelle / HOL에서 볼 수있는 요소 100 :
위의 "첫 번째 근사치"에 따른 기본 성능 손실.
SML / NJ 힙 관리 및 GC는 수십 MB 이상으로 확장하는 데 심각한 문제가 있습니다. Isabelle은 이제 일상적으로 100-1000MB, 때로는 몇 GB를 사용합니다.
SML / NJ 컴파일 속도가 매우 느립니다. 이는 전혀 관련이 없을 수 있습니다 (Isabelle / HOL은 런타임 컴파일과 실행 코드를 대체 함).
SML / NJ에는 네이티브 멀티 스레딩이 부족합니다. CPS가 "별도의 스택없이 사용자 공간에서 스레드를 롤링"하는 것으로 알려 졌기 때문에 완전히 관련이 없습니다.
힙과 스레드의 상관 관계는 Morriset / Tolmach PPOPP 1993 "프로 크 및 잠금 : 뉴저지 표준 ML을위한 휴대용 멀티 프로세싱 플랫폼"( CiteSeerX ) 의 논문에서도 논의됩니다 . 1-10 대신 1