이책은 누구의 관점에 따라서 책의 난이도가 이해도 및 평가가 상이할 것이라 생각됩니다.
일단은 이 책의 구성과 깊이 정도 다루고자 하는 점등은 누구의 관점이나 숙련도를 떠나서 좋다고 생각이 듭니다.
책의 목차부터 성능 최적화를 위한 개요와 예제소스로 이어지며 필요시 설명으로 부과되는 다이어그램등 책 후반부에 참고조로 소개되는 여러 Tip과 개발도구 활용 등 전체적으로 책의 흐름이 깔끔합니다.
책이 말하고자 하는 바는 자바스크립트는 결코 느린것이 아니며, 동적인 UI 구성에 있어서 고려해야할 응답속도의 포인트를 맞추고 있습니다. 그에 따른 코드의 실행 순서에 따른 응답속도의 차이를 말해주고 있습니다.
실제 자바스크립트 숙련자 및 UI 개발자 및 관련 업무분야의 사람들에게는 일목 요연하게 초점 위주로 정리가 잘 되어 있습니다. 다만 이 책을 처음 접하는 사람은 이책은 자바 스크립트의 입문서가 아니라는 점을 알아야 할 것입니다.
자바 스크립트가 무엇인지 모르고 도서를 선택해도 무관하기는 하지만 아무래도 자바스크립트의 개요라도 알고, 이 책을 접하면 적어도 초보자라도 자바스크립트를 접함에 있어서 무엇을 고려하고 이책이 말하고자 하는 바는 쉽게 알수 있을거라는 생각이 듭니다.적어도 우리가 접하는 웹스크립트가 웹 브라우저상에서 어떠한 절차를 거쳐서 보여지며, 단순 네트워크만 느려서 웹페이지가 느린것은 아니란것을 알수 있을 것입니다. 스스로도 다시한번 읽어봐야 할 필요성을 느끼는 책입니다.
- 책의 구성
각 챕터의 분량은 적은 분량으로 구성되어 있습니다. 마지막 부분인 요약에서 해당 챕터의 핵심사항을 다시 한번 정리해주고, 이전에 설명한 내용을 강조합니다.
컴파일러 입장에서 자바스크립트 코드를 분석하는 것 같은 느낌입니다.
자바스크립트가 어떻게 컴파일되고, 어떻게 브라우저에서 동작하는지 궁금하지 않은가요? 브라우저에서 메모리나 스택관리는 어떻게 하는지 궁금하지 않은가요? 같은 결과를 가져온다면 클라이언트 혹은 서버에서 처리하는게 낫지 않을까요? 같은 결과를 출력하고 같은 일을 수행하더라도 처리시간이 다르다면 여러가지 방법 중 어떤 것을 선택할 수 있을까요?
1번이 아닌 200,000번으로 반복 수행 해보면 어떤 방법이 빠르고 메모리 부담이 적은지 알 수 있습니다. 자바스크립트 예제 코드와 200,000번의 수행시간 그래프로 성능차이를 제시하고 있습니다. 또한 가능한한 모든 브라우저에서 테스트 한 결과를 첨부합니다.
같은 주제에 대하여 여러 개의 방법과 실험데이터를 제시함으로써 어떤 방법이 최선인지 그 과정을 제시하는게 책 구성의 주된 특징이고 가장 큰 장점입니다.
- 책의 내용 요약
한마디로 "자바스크립트 자체가 느린것이 아닙니다. 자바스크립트 엔진이 느린것도 아닙니다. 여러분이 자바스크립트 코드가 느린 것입니다." 라고 요약할 수 있을 것 같습니다.
전체용량은 동일한 파일들 이지만 요청하는 순서와 방식에 따라 체감속도가 달라질 수 있습니다.
자바스크립트 태그의 위치와 연결된 외부파일의 개수와 크기에 따라 전체 웹페이지의 로딩시간이 달라집니다. 웹브라우저가 외부파일을 모두 다운로드받고 자바스크립트 태그를 실행하고 난 다음에 페이지를 내려받기 때문입니다.
반복적인 객체 멤버에의 중첩된 접근, 스코프 체인의 확장 요소 사용 등의 사소한 습관이 성능을 저하시킬 수 있다고 지적합니다.
문자열 치환, 탐색에 있어서 정규표현식을 많이 사용합니다. 정규표현식은 유용하면서도 잘못작성하면 수행시간이 오래걸리기도 합니다. 극단적인 예로 정규표현식 한줄로도 브라우저를 멈추게 할 수도 있습니다(예전 구글 입사시험 문제 였다고 합니다). 정규표현식을 최적화된 형태로 작성하는 것은 매우 어렵지만 이 책에서 제시하는 내용을 참고하면 적어도 수행시간이 적게 걸리도록 할 수 있습니다. 단, 정규표현식 자체의 기초적인 부분에 대한 설명(구성하는 방법 등)은 본문에서 언급하지 않으므로 다른 자료를 참고 해야 합니다.
자바스크립트 파일들을 사용자의 웹브라우저에서 다운받은 시간을 줄이려면 어떤 방법들이 있을까요? 스크립스의 소스 파일 합치기, 최소화 하기를 적용할 수 있습니다. 이를 위한 유용한 도구들과 실제 예시를 제공합니다. 그리고 캐시를 활용하는 방법도 설명합니다.
마지막으로 디버깅도구, 프로파일러, 네트워크 분석기 역할을 하는 다양한 도구들을 소개하며 성능분석을 위한 사용사례를 제시합니다.
* 기억에 남는 한마디 - "고성능 애플리케이션을 만드는 일반 원칙은 빌드 타임에 할 수 있는 일을 런타임에 하지말라는 겁니다."
- 책을 읽는 내내 좋았던 점
번역이 아주 매끄럽습니다. 책 곳곳에서 보이는 옮긴이의 부가적인 설명이 이해하는데 정말 도움이 많이 되었습니다. 보통 하단에 역자 주 형식으로 설명하기도 하고 별도의 페이지를 활용해 길게 설명하기도 했습니다. 첨삭지도 같은 설명이 정말 마음에 듭니다.
- 아쉬운 점
이 책은 자바스크립트 관련 입문서가 절대 아닙니다. 책의 예상 독자들은 웹프로그래밍 경험이 있고 자바스크립트로 클라이언트측 프로그래밍을 많이 해본 초급자 이상의 분들에게 적합할 듯 합니다.
웹 프로그래밍과 자바스크립트에 대한 기반 지식이 있는 사람이 속도에 문제점을 최적화를 통하여 해결하는 방법에 대하여 배우기 위해 쓰인 책으로, 페이지에 자바스크립트를 불러오는 최적의 방법(기초)부터 자바스크립트 코드를 최대한 빠르게 실행 할 수 있는 개별적인 프로그래밍 테크닉, 자바스크립트 파일을 실무 환경에서 개발하고 배포하는 최선의 방법, 코드를 배포하고 난 뒤 발견된 문제에 잘 대처할 수 있도록 도와줄 성능 도구에 이르기까지 체계적인 학습으로 구성되어있다.
또한 적절한 설명과 실습을 통해서 자바스크립트의 문제점에 해결하기 위한 지식 습득에 어려움이 없도록 배려하고 있다.
이 책을 읽으면서 1997년에 처음 데스크탑 컴퓨터를 구입하고 모뎀을 연결하고 인터넷을 할 때 넷스케이프 웹브라우저를 사용하면서 공감하게 만들었던 내용이 먼저 떠오른다. 그 당시에는 컴퓨터도 인터넷도 그렇게 좋지 않아서 대부분의 사람들이 사진이나 파일 등을 다운로드하기 위해선 많은 시간을 소비해야만 했었다.
개발자라면 알 것이다. 예전엔 C언어를 작성하기 위해서 코드 최적화를 얼마나 잘하는 가를 가지고 개발자의 실력이 높다고 생각하며 메모리를 최소화하고, 가독성이 빠르며, 그에 맞게 속도도 좋게 만드는 것을 연구하던 때도 있었다.
하지만 지금은 십여 년이 흐르고 컴퓨터와 인터넷 속도는 G(GIGA)급으로 발전하면서 이렇게 코드의 최적화가 필요한가에 대한 인식의 변화를 다시 생각하게 하는 책이라고 생각한다.
책의 말을 인용하자면 자바스크립트는 "태생부터 느립니다". 인터넷이 활성화 되면서 (그 땐 제가 초등학생 이였습니다.) html과 자바스크립트 코드가 많이 배포가 되었습니다. 당시에 자바스크립트를 이용해 마우스 포인터 모양을 요술봉 모양으로 만든다던가, 마우스가 지나간 자리에 눈이 내리게 한다던가 하는 코드가 유행했던 것으로 기억합니다.
하지만 언제부턴가 보완성과 또 성능적인 면을 강조하면서 웹 페이지는 단순해지고, 또 자바스크립트를 지양하는 쪽으로 변하게 되었습니다.
또 유행이 바뀌었는지 요새에는 효율성 측면에서 자바스크립트를 쓸 수 있는 부분에는 쓰자는 쪽으로 많이 바뀌었습니다. 하지만 자바스크립트를 제대로 공부하는 사람은 없습니다. 대부분 필요한 소스코드 부분만 인터넷에서 긁어서 씁니다. 저도 마찬가지지만.. 그래서, 효과적인 스크립트를 쓰기 보다는 그저 닥치는대로 썼다는 표현이 맞을 것 같습니다.
이 책은 분명 초보자를 위한 책은 아닙니다. 자바, 자바스크립트, HTML, XML은 꼭 공부를 하고 봐야 합니다. 무작정 이책을 보게 된다면 아마 바로 책장 깊숙히 들어갈 것 같습니다. ^^ 저도 앞에 언급한 언어들을 공부했지만.. 사실 잘 모르겠는 부분도 좀 있었습니다.
어찌되었건, 분명 좋은 책입니다. 그간 모르고 사용했던 스크립트들에 대해서 다시 생각하게 만들어 주었고, 어떤 것이 효율적인지, 어떤 것이 비효율적인지를 알게 되었습니다. 이제 비효율적인 코드는 지양해야 겠죠? 책을 읽으면서 혼자 "아!"하면서 감탄할 때가 많았습니다. 많은 분들에게도 이 책이 많은 도움이 됐으면 좋겠습니다.
자바스크립트는 초창기 많은 버그들과 느린성능, 디자인상의 문제점 들로 인해 개발자와 사용자들로 부터 외면을 받아왔다. 프로그래밍이 용이하고 사용이 쉽기 때문에 많은 사람들이 사용하였지만 잘못된 사용방법과 기본적으로 가지고 있던 문제점으로 인해 사람들의 관심을 얻지 못하였다.
하지만 자바스크립트는 현재 웹에서 사용되는 언어 중 가장 중요한 언어라고 할 수 있다. 자바스크립티의 장점들이 발견되고 Ajax, Web2.0의 핵심기술로 자리 잡으면서 많은 자바스크립트 라이브러리들이 개발되어 재평가 받고있다.
이 책은 자바스크립트를 효율적으로 사용하는 로딩과 각종 성능에 영향을 미치는 테크닉에서부터 배포, 프로파일링까지 많은 방법 들을 기술하고 있다.
자바스크립트를 이용해서 잘 개발하는 것도 중요하지만, 효율적인 방법으로 성능을 높이는 것도 중요한 일이다. 많이 개발해보면서 시행착오를 격어보고 경험을 쌓는 것도 좋지만, 잘 분석된 성능향상 방법들을 몸에 익혀 시행착오를 줄일 수 있는 방법을 제공한다는 것이 이책의 가장 큰 장점이고, 프로 프론트앤드 개발자로 가는 길이 되지 않을까 생각 한다.
자바스크립트를 기술하고 있는 책은 많이 있지만 필독서로 추천할만한 내용을 담고 있는 자바스크립트 책은 많이 않다고 생각한다. 지금까지 주위에 자바스크립트 책을 추천할 때 "JavaScript: The Good Parts"와 "Javascript the definitive guide" 을 추천하고 훌륭한 가이드 역할을 했지만, 이제는 "자바스크립트 성능 최적화: High Performance JavaScript" 까지 포함하여 필독서로 추천하고 싶다. 그만큼 효율적으로 성능을 높이기위한 방법과 상세한설명으로 알찬 내용이 준비되어 있다.
이 도서는 "왜 최적화가 필요한가?" 라는 질문으로 시작이 된다.
대부분의 브라우저 마다 개별적인 최적화를 한 엔진을 가지게 되었고 코드의 양은 방대해져 가는데 엔진들이 그것을 뒷받침 해주고 있지 못하기 때문에 우리는 최적화를 해야 한다 라고 얘기 해준다.
이 책에서는 자바스크립터의 성능에 초점을 두고 최적화를 위해 어떤 방법들이 있는지 설명해준다.
먼저 첫번째 챕터에서 자바스크립터의 차단성에 대해 얘기 하며 이것을 회피 하는 기법 혹은 최소화 하는 기법들에 대해 설명해준다. 그리고 나머지 챕터에서도 각각의 상황에 맞는 최적화 기법 및 해결책들을 설명해준다.
이 책은 자바스크립트 리팩토링 기법 이라고 해도 잘 어울릴 것 같다. 개인적으로 자바스크립트를 사용한 실무 경험이 전혀 없기 때문에 체감할 수 있는 부분은 없었지만 초,중급 정도 되시는 분들에게는 이 책을 통해 취약했던 부분을 보완해 나가는데 많은 도움이 될 듯 하다.
하지만 책에서도 나오듯이 성능이 조금은 떨어지지만 표준인 것과 성능은 높지만 아직 표준은 아닌 기법들 사이에서의 선택. 서로 특성이 다른 엔진들 사이에서의 기법을 적용하기 위한 갈등, 유지보수 및 가독성 등을 고려 했을 때 고려해야 할 부분들 및 이해 해야 할 부분이 워낙 많아 쉽지 만은 않아 보인다.
각각의 문제들 마다 개선시켰을 경우 얼마만큼의 성능향상이 나타나는지를 응답 시간을 통한 그래프를 이용하여 보여주어서 어느 부분이 중요한 지를 쉽게 파악하는데 도움이 될 수 있을 것 같다.