2010년 10월 25일 월요일

tracemonkey, javascript JIT compiler & google v8

파이어폭스 3.1에 TraceMonkey라는게 도입된다구 합니다. 이게- 자바스크립트를 엄청 빠르게 해준다는데...

파이어폭스에 들어있는 자바스크립트 엔진이 Spider Monkey라는 이름을 갖고 있는데요, Trace Monkey가 이걸 대체한다는건지, 이 기술이 추가가 된다는 건지는 잘 모르겠습니다.

암튼 trace monkey는 자바스크립트 JIT(just in time) 컴파일러 역할을 하는 모양입니다. js는 대개 인터프리터 방식으로 동작하는데다 동적이기도 하고 .. 해서 속도가 그다지 빠른 편은 아닌걸로 압니다. 그런데 Ajax가 대 히트를 치면서, 그리고 "웹페이지"가 아닌 "웹애플리케이션"으로 진화하면서 js사용이 엄청 많아진 요즘, js가 웹서비스에서 병목이 되는 경우도 많지요.

firefox 2.0에서 gmail을 띄워놓고 하룻밤쯤 지나면 메모리 점유가 엄청나고, 브라우저가 먹통이 될 정도로 느려지기도 했었지요. firefox 3.0에 와서 이래저래 많이 빨라지기는 했지만 오늘 구글 크롬을 설치해보니 ㅎㅎ 비교가 안 되더군요.

구글 크롬Chrome 얘기가 나와서 말인데, (구글에서 만든 웹브라우저입니다) 여기에 쓰여진 자바스크립트 VM(엔진이 아니라 VM;Virtual Machine이란 표현을 주로 쓰더군요)은 V8이라는 이름을 가졌어요. 이 v8의 특징을 보니 js를 'native machine code'로 바꿔 실행한다고 하네요.

결국 trace monkey나 v8이나 비슷한 방식이 아닌가 하는 생각을 해 봅니다. 그리고 브라우저 개발의 초점은 js 성능향상이구나. 라는 생각도...

firefox3나 사파리 브라우저를 보면서, 와 되게 빨라졌네! 라고 생각했는데. 크롬이라던가 최근의 경향을 보니까 '빠른 것도 더 빨라질 수 있다'군요. 이쯤 되면 js를 더 전문적으로 해보는 것도 좋겠다는 생각도 들고요. 더 발전해서 server-side를 js로 개발하는 날이 왔으면 좋겠다는 생각도 해봅니다 ㅎㅎ

이상은 저의 추측입니다만, 혹시 잘못된 점이 있으면 지적해주세요.