나는 바이슨의 JS 포트 인 jison을 사용하여 작은 언어의 JavaScript로 인터프리터를 작성했습니다. 언어는 표현과 조건을 평가하는 데 사용됩니다. 지금은 평가가 구문 분석과 혼합되어 있습니다.더 빠르고 깨끗하며 AST를 생성하고 반복하고 코드를 생성하는 것은 어느 것입니까?
나는 그것을 최적화하려고하는데 병목 현상은 렉서와 파서이다. 그래서 저는 손으로 그것을 파싱하고 런타임에만 평가하기로 결정했습니다.
더 빠르고 깨끗한 JS 코드를 생성하고 실행하거나 AST를 생성하고 런타임에 반복 실행하는 것이 문제입니다.
'eval' = 컴파일러를 비싸게 = 비싸다. –
컴파일 된 코드와 해석 된 코드가 더 빠른지 궁금해합니다. 컴파일 된 코드는 거의 항상 더 빠를 것이지만 해석 된 것보다 더 많은 두통을 유발할 수 있습니다. – Bubbles
@JanDvorak 글쎄요, 한 가지는 모든 노드가 하나씩 발생하기 때문에 시작 시간이 충분하다는 것입니다. 시작하기 전에'eval'을 호출하기 전에 런타임에 결과 함수를 실행합니다. –