closure compiler vs yuicompressor

38
Google Closure Compiler vs. YUI Compressor [email protected] 2009-11-09

Upload: lifesinger

Post on 20-Jan-2015

45.051 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Closure Compiler vs YUICompressor

Google Closure Compiler

vs.

YUI Compressor

[email protected]

2009-11-09

Page 2: Closure Compiler vs YUICompressor

Who’s this guy?

http://lifesinger.org/

Page 3: Closure Compiler vs YUICompressor

Players

• GC = Google Closure Compiler

http://code.google.com/p/closure-compiler/

Page 4: Closure Compiler vs YUICompressor

Players

• YC = YUI Compressor

http://yuilibrary.com/downloads/#yuicompressor

Page 5: Closure Compiler vs YUICompressor

Optimization Levels

① Whitespace Level

② Simple Optimizations

③ Advanced Optimizations

Page 6: Closure Compiler vs YUICompressor

Whitespace

Page 7: Closure Compiler vs YUICompressor

Whitespace Level

• Remove comments

• Remove extra white space

• Remove unneccessary semicolon

GC

YC

Page 8: Closure Compiler vs YUICompressor

Simple Optimizations

Page 9: Closure Compiler vs YUICompressor

Simple Optimizations

• var varName = “” var a = “”

• object[“property”] object.property

• {“key” : “val”} {key : “val”}

• „xi\‟an‟ “xi‟an”

• “I am ” + “hot” “I am hot”

GC

YC

Page 10: Closure Compiler vs YUICompressor

Simple Optimizations

• a = new Object a = {}

• a = new Array a = []

• if(a) b() a && b()

• if(a) b(); else c() a ? b() : c()

• if(1) b(); else c() b()

• return 2 * 3; return 6;

• return undefined; return;

• var f = function(){} function f(){}

• var a; var b; var a, b;

• … GC

YC

Page 11: Closure Compiler vs YUICompressor

Simple Optimizations

• Simple dead code removal

GC

YC

Page 12: Closure Compiler vs YUICompressor

Advanced Optimizations

Page 13: Closure Compiler vs YUICompressor

Advanced Optimizations

• Dead code removal & Function inlining

GC

YC

Page 14: Closure Compiler vs YUICompressor

Advanced Optimizations

• Aggressive renaming

GC

unsafe

Page 16: Closure Compiler vs YUICompressor

Whitespace Level Simple Level Advanced Level

GC

YC

Basic

Page 17: Closure Compiler vs YUICompressor

Helping Compressors

Page 18: Closure Compiler vs YUICompressor

Helping Compressors

① Use local variables to store:

1. Repeated primitive values

2. Global variables

3. Object properties

Good practices for YC and GC both.

Page 19: Closure Compiler vs YUICompressor

Helping Compressors

② Try to have only one var statement:

Good practice for YC.

Unneccessary for GC.

Page 20: Closure Compiler vs YUICompressor

Hurting Compressors

Page 21: Closure Compiler vs YUICompressor

Hurting Compressors

① eval() is Evil.

GC

YC

Page 22: Closure Compiler vs YUICompressor
Page 23: Closure Compiler vs YUICompressor

Hurting Compressors

② with statement considered harmful.

GC

YC

Page 24: Closure Compiler vs YUICompressor
Page 25: Closure Compiler vs YUICompressor

Hurting Compressors

③ Jscript conditional comments

Page 26: Closure Compiler vs YUICompressor

Hurting Compressors

Solutions:

- Solution #1: Don’t use

- Solution #2: See Solution #1

Page 27: Closure Compiler vs YUICompressor

Sugar

Page 28: Closure Compiler vs YUICompressor

Comments

• Preserve some comments:

YC

Page 30: Closure Compiler vs YUICompressor

File Combination

GC

java -jar compiler.jar

--js=in1.js --js=in2.js ...

--js_output_file=out.js

Page 31: Closure Compiler vs YUICompressor

native2ascii

• GC works well for utf-8 encoding files.

• YC doesn’t have this feature.

Page 32: Closure Compiler vs YUICompressor

native2ascii

YC + native2ascii command script:

Page 33: Closure Compiler vs YUICompressor

native2ascii

GC script for GB18030 encoding files:

Suggest GC to support: --charset GB18030

Page 34: Closure Compiler vs YUICompressor

CSS Compression

• YC is good!

• GC comes on!!!

Page 35: Closure Compiler vs YUICompressor

Compression Rates

Page 36: Closure Compiler vs YUICompressor

Summary

• YC is more reliable.

• GC is amazing, and almost safe at simple

optimization level.

• GC is promising, but unsafe at advanced

optimization level.

Page 37: Closure Compiler vs YUICompressor

References

• http://www.slideshare.net/nzakas/extreme-

javascript-compression-with-yui-

compressor

• http://stackoverflow.com/questions/168642

8/should-i-use-the-yui-compressor-or-the-

new-google-closure-compiler-to-compress-

my

• http://news.ycombinator.com/item?id=924

426

Page 38: Closure Compiler vs YUICompressor

Thanks!