토요일, 4월 14, 2012

[독서광] 자바스크립트 성능 최적화

요즘 자바스크립트가 여기저기서 뜨고 있다. Ajax를 사용한 동적인 웹 프로그래밍의 기본 스크립팅 언어로 자리잡은지는 한참 되었고, MongoDB 대화식 셸과 Node.js에서는 서버 쪽 언어로 자바스크립트를 사용하고 있기에 개발자들 사이에 관심이 집중되고 있다. TIOBE 인기 순위에 따르면 자바스크립트는 작년 10위에서 올해 9위로 올라섰고 파이썬의 위치를 위협하고 있다. 그렇다면 개발자 입장에서 자바스크립트를 접했을 때 가장 머리 아픈 점은 무엇일까? 여러 가지 대답이 나오겠지만, 그 중 하나는 성능이다. 특히 웹의 대화식 특성으로 인해 조금이라도 페이지 로딩이 느려지면 바로 벗어나므로, 자바스크립트가 병목으로 작용하지 않도록 개발자들은 각별히 주의해야 한다. 하지만 C/C++/Java와 같은 다른 전통적인 프로그래밍 언어에 비해 자바스크립트와 관련해 성능을 높이는 방법을 익히기란 쉽지 않다. 웹 브라우저라는 (사실상 가상이 아닌) 가상 기계에서 동작하기 때문에 브라우저별로 특성이 제각각이기 때문이다.

오늘 소개할 책인 '자바스크립트 성능 최적화'는 자바스크립트 관련 성능 문제로 고민하기 시작한 중급(스크립트 키드나 초급 개발자들이 보기에는 조금 난이도가 높을지도 모르겠다. 물론 고급 개발자들이라면 다른 프로그래밍 언어에서 겪은 내용이 데자뷰로 펑펑 터지기 때문에 그냥 이틀 정도면 다 읽고나서 "뭐 자바스크립트도 별거 없네!"라고 말할지도... T_T) 개발자들에게 성능 관점에서 자바스크립트 언어를 새롭게 바라보는 좋은 기회를 제공할 것이다. 본문 중에 은총알은 나오지 않지만, 평상시에 무심코 지나가면서 작성한 코드가 성능에 어떤 식으로 치명타를 가했는지 여러 가지 나쁜 관례를 예로 들어 설명하므로 "내가 만든 웹 페이지는 왜 이렇게 느려?"라고 고민하는 개발자분들께 많은 도움이 될 것 같다.

목차를 보면, 스크립트를 내려받아 실행할 때까지 웹 브라우저가 어떤 삽질을 하는지 설명하는 '로딩과 실행', 그리고 프로그래밍 언어 관점에서 자바스크립트가 다른 프로그래밍 언어에 비해 독특한 특성이 있으므로 '스코프와 객체 관리'에 경각심을 불러 일으키는 '데이터 접근', 원래부터 느려터진 DOM과 조금이라도 친해지기 위한 각종 테크닉을 제시하는 'DOM 스크립팅'으로 시작한다. 그리고 나서 웹 브라우저뿐만 아니라 서버 쪽 언어에서도 도움이 될만한 일반적인 내용인 '알고리즘과 흐름 제어', '문자열과 정규 표현식'을 설명하고 나서 다시 웹과 밀접한 관련이 있는 주제인 '응답성 좋은 인터페이스', 'Ajax'를 설명한다. 그리고 다시 일반적인 내용인 '프로그래밍 사례'를 소개하고 나서 마지막으로 '애플리케이션 빌드와 배포', 프로파일링에 필요한 '도구'를 설명하며 마무리한다.

참고로 자바스크립트는 컴파일 언어가 아니며(물론 요즘 나오는 브라우저는 사정이 다르다. 파이어폭스는 JIT로 실행 중에 필요한 부분을 컴파일하는 TraceMonkey라는 엔진을 탑재하고 있고, 크롬은 아예 대놓고 자바스크립트를 컴파일해서 사용하는 V8이라는 엔진을 탑재하고 있다), 브라우저와 얽힌 여러 가지 특성으로 인해 기존 컴파일 방식의 언어에 비해 저주순 최적화 내용은 기대하기 어렵다는 사실을 감안하면, 책의 목차에서 일반적인 순수 자바스크립트 코드 최적화에 할당된 페이지 분량이 적은 이유를 이해하리라 본다. 이 책을 다 읽고 나도 웬지 섭섭한 독자분들께서는 Chrome V8 Design ElementsTamarin Tracing 페이지를 참조해 내부 동작 방식에 대한 지식을 쌓으면 좋겠다.

그러면 즐거운 자바스크립트 프로그래밍을 즐기시기 바라며!

EOB

댓글 없음:

댓글 쓰기