Firefox 9에서 구현 중인 신 기능이라고 할 수 있는 JavaScript 엔진의 개량에 대해서 간단하게 소개할까 합니다. Type Inference 기능은 일년 이상 연구를 통해 진행 중인 것으로 SpiderMonkey JavaScript 엔진에 도입된 형태 추론이란 프로그램의 코드 해석과 실행시의 변수형 감시를 조합하고 JavaScript 프로그램의 형태 정보를 얻는 기능입니다.
이를 통해 얻은 형태 정보는 보다 효율적인 코드를 생성하기 위해 JIT 컴파일 중에 이용됩니다. Firefox 9 에서는 추론된 형태 정보를 JagerMonkey JIT 컴파일러로 활용하도록 개발되었습니다. Firefox 9 에서는 기본으로 형태 추론을 이용한 컴파일 모드를 사용하여 Kraken 나 V8 등 주요한 벤치마크에서는 30%이상 속도가 빨라져 JavaScript 처리가 무거운 웹 사이트에서의 엄청난 속도 증가가 예상됩니다.
JavaScript는 동적형 언어이며, 값의 형태를 모르면 JIT 컴파일러는 그 값이 모든 형태의 경우를 고려한 코드를 생성할 필요가 있습니다.이 때문에 Java 등의 정적형 언어에 비하면 프로그램의 실행 속도가 꽤 늦어집니다. JagerMonkey에 형태 추론을 도입함으로서 성능 향상이 상당히 제공될 수 있습니다.
추론된 형태 정보를 pool 형태로 활용하기 위해 현재 다수의 프로젝트가 진행중입니다. 그 중에서도 특히 Mozilla 의 차세대 JIT 컴파일러 IonMonkey 프로젝트에서는 Java와 퍼포먼스의 차이를 완전하게 없애는 일을 목표로 하고 있습니다. 형태 추론으로 이용되고 있는 내부의 알고리즘이나 테크닉에 대해서는 아래 논문을 살펴봐 주시기 바랍니다.
Fast and Precise Hybrid Type Inference for JavaScript
원문: Type Inference brings JS improvements to Firefox Beta
by Brian Bondy, Firefox Engineer
댓글이 없습니다.