웹에서 메타 순환 해석기 (SICP 포함)에 대해 읽었으며 일부 구현 코드 (예 : PyPy 및 Narcissus)를 조사했습니다.
나는 메타 원형 평가, Lisp 및 Smalltalk를 크게 활용 한 두 가지 언어에 대해 꽤 많이 읽었습니다. 내가 이해하는 한 Lisp는 최초의 자체 호스팅 컴파일러이고 Smalltalk는 최초의 "진정한"JIT 구현을 가졌다.
내가 완전히 이해하지 못한 것 중 하나는 이러한 인터프리터 / 컴파일러가 어떻게 우수한 성능을 달성 할 수 있는가, 즉 PyPy가 CPython보다 빠른 이유는 무엇입니까? 반사 때문입니까?
또한 스몰 토크 연구를 통해 JIT, 가상 머신 및 리플렉션간에 관계가 있다고 믿었습니다. JVM 및 CLR과 같은 가상 시스템은 많은 유형의 내부 검사를 허용하며 JIT (Just-in-Time) 컴파일에서 유용하게 사용한다고 생각합니다. 그러나 내가 아는 한 가상 머신은 기본 명령어 세트가 있다는 점에서 CPU와 비슷합니다. 가상 머신에는 유형과 참조 정보가 포함되어있어 언어에 구애받지 않고 반영 될 수 있습니까?
해석 된 언어와 컴파일 된 언어가 모두 바이트 코드를 대상 (LLVM, Parrot, YARV, CPython)으로 사용하고 있으며 JVM 및 CLR과 같은 기존 VM은 성능이 크게 향상 되었기 때문에이 문제를 묻습니다. 나는 그것이 JIT에 관한 이야기를 들었지만, JIT는 Smalltalk와 Sun 자체가 Java보다 먼저 해왔 기 때문에 새로운 것이 아무것도 없다는 것을 들었습니다. 과거에 특히 성능이 우수한 VM을 기억하지 못하고 JVM 및 .NET 외부에 많은 비 학술적 VM이 없었으며 성능이 현재만큼 좋지 않았습니다 (이 주장을 소싱 할 수 있기를 바랍니다 만 개인적인 경험으로 말하십시오).
그런 다음 갑자기 2000 년대 후반에 무언가가 바뀌었고 많은 언어가 확립 된 언어로도 성능이 뛰어 나기 시작했습니다. 거의 모든 최신 VM이 성능면에서 급등 할 수있는 JIT 구현에 대해 발견 된 것이 있습니까? 종이나 책?