자바스크립트 최적화 컴파일러 - Closure Compiler

MasterQ의 이미지

대학교 컴파일러 프로젝트 파트너였던 친구가 하고 있는 흥미있는 오픈소스 프로젝트가 있어서 소개합니다.

각자 프로젝트 끝내고 학기가 끝난후에도 컴파일러를 최적화 하겠다고 했었는데 저는 그것과 무관한 드라이버를 만들고, 친구는 한말을 지켰네요.

http://closure-compiler.appspot.com/home

여기에 가시면 java script를 입력할수 있게 되어있고요, compile을 하면 최적한된 코드가 나옵니다. 개인적으로는 readability가 떨어지는것은 좋지 않다고 생각하지만 웹의 특성상 유용하게 쓰일수 있을것 같네요. 친구말로는 gmail, google docs, search등등에 다 쓰인다고 하는데 다른분들도 써보시고 프로젝트에 참여하거나 의견을 주시면 좋겠다는 생각입니다.

프로젝트 페이지: http://code.google.com/closure/compiler/
PDF 문서: http://acleung.com/velocity.pdf

File attachments: 
첨부파일 크기
PDF icon velocity.pdf392.54 KB
cleansugar의 이미지

LISP 후손 클로저 언어인 줄 알았습니다.

어제 프로그래밍 클로저Clojure란 책이 나왔음을 알려드립니다.
http://book.naver.com/bookdb/book_detail.nhn?bid=6289590

___________________

http://blog.aaidee.com

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

kaeri17의 이미지

변수이름바꾸는거 빼고는 큰 특이사항을 못찾겠는데 어떠한 최적화를 수행하는지 알 수 있을까요?

kaeri17의 이미지

문서에 있군요 ㅋㅋ

lifthrasiir의 이미지

YUI Compressor 같은 걸 구글에서도 만들었나 보네요. 보니까 서비스 형태로도 만들어 놓았고, 구현은 YUI Compressor랑 똑같이 자바인 것 같고 (Rhino도 있겠다...) 약간 더 aggressive하게 최적화를 하는 부분이 있는 걸로 보입니다. (예를 들어 없는 변수를 만들어서 코드를 줄이려는 경우도 있군요. 이게 성능에 얼마나 영향을 주는 지는 잘 모르겠지만...) 아무튼 그럴듯해 보입니다.

karikera의 이미지

컴파일 옵션을 ADVANCED로 할 경우 단순히 코드를 줄이는 것 뿐만 아니라.

연산 가능한 부분은 미리 연산한다던지..
한두번 쓰인 짧은 함수는 인라인으로 바꾼다던지.. 하는 멋진(!) 최적화를 해요!.

어노테이션으로 타입을 정해놓을 수 있고, 잘못된 타입으로 대입시키면 오류도 나요!.
어노테이션으로 생성자 지정, 탬플릿, 디파인, 상속, 오버라이딩등을 전부 표기할 수 있어요! ..