SlideShare una empresa de Scribd logo
1 de 64
Descargar para leer sin conexión
Extreme JavaScript Compression with
          YUI Compressor
               Nicholas C. Zakas
     Principal Front End Engineer, Yahoo!
Who's this guy?
• Principal Front End Engineer, Yahoo! Front Page

• YUI Contributor
• Author
JavaScript
       Minification/Compression
• Problem: Lots of JavaScript
• Solution: Make JavaScript smaller
• Two areas:
  – Wire weight
  – Browser weight
Wire Weight Solution: Gzip



                   Internet




    Server
Wire Weight Solution: Gzip



Internet




                  Browser
Browser Weight
Browser Weight Solution: Minification
 •   Remove comments
 •   Remove extra white space
 •   Identifier replacement
 •   Other...
Minification Tools
• ECMAScript Cruncher (ESC)
  – http://www.saltstorm.net/depo/esc/
• JSMin
  – http://www.crockford.com/javascript/jsmin.html
• Packer
  – http://dean.edwards.name/packer/
• Dojo Shrinksafe
  – http://shrinksafe.dojotoolkit.org/
YUI Compressor




http://developer.yahoo.com/yui/compressor/
About YUI Compressor
•   Remove comments
•   Remove extra white space
•   Identifier replacement
•   Micro-optimizations
•   Built on top of Rhino interpreter
    – Makes all optimizations safe
Mozilla Rhino




• Open source JavaScript interpreter
• Written in Java
• Based on Firefox's interpreter

         http://www.mozilla.org/rhino/
How It Works
Micro Optimizations
The Results

      -44%


      -44%
Helping the Compressor
Best Optimization
            =
Identifier Replacement
    (aka munging)
Identifier Replacement
• Local identifiers only
   – Functions and variables
What Can't Be Replaced
• Primitive values
   – strings, booleans, numbers, null, and undefined
Primitive Values
• Strings take up the most space
• Non-numeric literals take second-most
  – true, false
  – null
  – undefined
• Approach: Any literal value used two or more
  times should be stored in a local variable
Primitive Values



                   263 b




                   172 b
Primitive Values




                   293 b




                   162 b
Prototype
•   79 repeated strings = 1196 bytes
•   80 true/false = 359 bytes
•   44 null = 176 bytes
•   21 undefined = 189 bytes
•   Total primitives = 1920 bytes
•   Potential savings > 1 kb
jQuery
•   96 repeated strings = 1742 bytes
•   107 true/false = 478 bytes
•   46 null = 184 bytes
•   Total primitives = 2404 bytes
•   Potential savings > 1.3 kb
•   undefined = negligible
jQuery
Primitive Variables
What Can't Be Replaced
• Primitive values
   – strings, booleans, numbers, null, and undefined
• Global variables
   – window, document, XMLHttpRequest, etc.
Global Variables
• Most bytes:
  – document
  – window
• Approach: Any global variable used two or more
  times should be stored into a local variable
Global Variables




                   293 b




                   162 b
Global Variables




                   317 b




                   162 b
Prototype
•   49 document = 392 bytes
•   29 window = 174 bytes
•   Total globals = 566 bytes
•   Potential Savings > 500 bytes
jQuery
•   24 document = 192 bytes
•   27 window = 162 bytes
•   Total globals = 354 bytes
•   Potential Savings > 300 bytes
What Can't Be Replaced
• Primitive values
   – strings, booleans, numbers, null, and undefined
• Global variables
   – window, document, XMLHttpRequest, etc.
• Property names
   – foo.bar
Property Names
• Next to repeated strings, biggest source of extra
  bytes
• Anything to the right of a dot cannot be replaced
• Makes a.b.c even more expensive
• Approach: Any property used two or more times
  should be stored into a local variable
Property Names




                 317 b




                 162 b
Property Names




                 291 b



                 144 b
What Can't Be Replaced
• Primitive values
   – strings, booleans, numbers, null, and undefined
• Global variables
   – window, document, XMLHttpRequest, etc.
• Property names
   – foo.bar
• Keywords
Keywords
• Most commonly overused:
  – var
  – return
• Approach: Try to have only one var statement
  and one return per function
Keywords




           291 b



           144 b
Keywords




           308 b



           127 b
The Results
Before:



                                              172 b
After:



                                              127 b
Total Savings (from original) = 136 b (52%)
Total Savings (from final)    = 181 b (59%)
Hurting the Compressor
Preventing Identifier Replacement
• Use of eval() function
“eval() is evil”
-Douglas Crockford
eval() is Evil
eval() is Evil
Preventing Identifier Replacement
• Use of eval() function
  – Solution #1: Don't use it
  – Solution #2: Create a global function that wraps
    eval()
Living with eval()
Preventing Identifier Replacement
• Use of eval() function
  – Solution #1: Don't use
  – Solution #2: Create a global function that wraps
    eval()
• Use of with statement
“with statement
considered harmful”
-Douglas Crockford
with Statement
Preventing Identifier Replacement
• Use of eval() function
  – Solution #1: Don't use
  – Solution #2: Create a global function that wraps
    eval()
• Use of with statement
  – Solution #1: Don't use
  – Solution #2: see Solution #1
Preventing Identifier Replacement
• Use of eval() function
  – Solution #1: Don't use
  – Solution #2: Create a global function that wraps
    eval()
• Use of with statement
  – Solution #1: Don't use
  – Solution #2: see Solution #1
• JScript conditional comments
Jscript Conditional Comments
Preventing Identifier Replacement
• Use of eval() function
  – Solution #1: Don't use
  – Solution #2: Create a global function that wraps
    eval()
• Use of with statement
  – Solution #1: Don't use
  – Solution #2: see Solution #1
• JScript conditional comments
  – Only solution: Don't use
The Compressor Helps You
Verbose Mode
• Use -v switch to enable
• Reports issues with code related to minification:
   –   Undeclared variables
   –   Unused variables
   –   Functions with more than one var statement
   –   Use of evil features (eval(), with, conditional
       comments)
Verbose Mode
Summary
For Optimal File Size
• Use local variables to store:
   – Repeated primitive values
   – Global variables
   – Object properties
• Limit each function to one var and one
  return
• Avoid using eval() and with()
• Heed YUI Compressor's advice
• Combine with HTTP compression for best savings
http://developer.yahoo.com/yui/compressor/
Questions?
Etcetera
• My blog:    www.nczonline.net
• My email:   nzakas@yahoo-inc.com
• Twitter:    @slicknet
Happy crunching!
Creative Commons Images Used
•   http://flickr.com/photos/velkr0/467471030/
•   http://flickr.com/photos/oskay/253010234/
•   http://flickr.com/photos/pacfolly/2304020816/
•   http://flickr.com/photos/blmurch/304690615/
•   http://flickr.com/photos/tshirbert/191179745/
•   http://flickr.com/photos/mc/27061495/
•   http://flickr.com/photos/oberazzi/318947873/

Más contenido relacionado

Destacado

Fate of pyruvate - A quick review
Fate of pyruvate - A quick reviewFate of pyruvate - A quick review
Fate of pyruvate - A quick reviewNamrata Chhabra
 
Basics of Compressor
Basics of CompressorBasics of Compressor
Basics of CompressorSLA1987
 
Compressor And Compressed Air Systems
Compressor And Compressed Air SystemsCompressor And Compressed Air Systems
Compressor And Compressed Air SystemsSaurabh Jain
 
Romeo & juliet themes lesson
Romeo & juliet themes lessonRomeo & juliet themes lesson
Romeo & juliet themes lessonKathy Strelow
 
Water Chilled Airconditioning
Water Chilled AirconditioningWater Chilled Airconditioning
Water Chilled AirconditioningAljon Altiche
 
Chemical translocation & molecular fate
Chemical  translocation & molecular fateChemical  translocation & molecular fate
Chemical translocation & molecular fateSumer Pankaj
 
presentation on Introducing components of ic engine (automobile engine), Powe...
presentation on Introducing components of ic engine (automobile engine), Powe...presentation on Introducing components of ic engine (automobile engine), Powe...
presentation on Introducing components of ic engine (automobile engine), Powe...Engr Soomro
 
Basics of IC engine
Basics of IC engineBasics of IC engine
Basics of IC engineSLA1987
 
FOUR STROKE ENGINE
FOUR STROKE ENGINEFOUR STROKE ENGINE
FOUR STROKE ENGINEshaffu786
 
INTERNAL COMBUSTION ENGINES PPT
INTERNAL COMBUSTION ENGINES PPT INTERNAL COMBUSTION ENGINES PPT
INTERNAL COMBUSTION ENGINES PPT AKASH1001
 
WordPress State of the Word 2012
WordPress State of the Word 2012WordPress State of the Word 2012
WordPress State of the Word 2012photomatt
 
Critical Thinking
Critical ThinkingCritical Thinking
Critical Thinkingohassta
 
Intellectual Property Rights
Intellectual Property RightsIntellectual Property Rights
Intellectual Property Rightsharshhanu
 
Diesel engine Powerpoint
Diesel engine PowerpointDiesel engine Powerpoint
Diesel engine Powerpointkaushdave
 
Basics Of Automobile
Basics Of AutomobileBasics Of Automobile
Basics Of Automobileshankaragiri
 
Digital Marketing Overview
Digital Marketing OverviewDigital Marketing Overview
Digital Marketing OverviewAnton Koekemoer
 

Destacado (20)

Fate of pyruvate - A quick review
Fate of pyruvate - A quick reviewFate of pyruvate - A quick review
Fate of pyruvate - A quick review
 
Basics of Compressor
Basics of CompressorBasics of Compressor
Basics of Compressor
 
Compressor And Compressed Air Systems
Compressor And Compressed Air SystemsCompressor And Compressed Air Systems
Compressor And Compressed Air Systems
 
Compressor
CompressorCompressor
Compressor
 
Romeo & juliet themes lesson
Romeo & juliet themes lessonRomeo & juliet themes lesson
Romeo & juliet themes lesson
 
Water Chilled Airconditioning
Water Chilled AirconditioningWater Chilled Airconditioning
Water Chilled Airconditioning
 
Chemical translocation & molecular fate
Chemical  translocation & molecular fateChemical  translocation & molecular fate
Chemical translocation & molecular fate
 
presentation on Introducing components of ic engine (automobile engine), Powe...
presentation on Introducing components of ic engine (automobile engine), Powe...presentation on Introducing components of ic engine (automobile engine), Powe...
presentation on Introducing components of ic engine (automobile engine), Powe...
 
Basics of IC engine
Basics of IC engineBasics of IC engine
Basics of IC engine
 
Six stroke engine ppt
Six stroke engine pptSix stroke engine ppt
Six stroke engine ppt
 
FOUR STROKE ENGINE
FOUR STROKE ENGINEFOUR STROKE ENGINE
FOUR STROKE ENGINE
 
AIR POWERED ENGINE PPT
AIR POWERED ENGINE PPTAIR POWERED ENGINE PPT
AIR POWERED ENGINE PPT
 
INTERNAL COMBUSTION ENGINES PPT
INTERNAL COMBUSTION ENGINES PPT INTERNAL COMBUSTION ENGINES PPT
INTERNAL COMBUSTION ENGINES PPT
 
Engine systems diesel engine analyst - part 1
Engine systems   diesel engine analyst - part 1Engine systems   diesel engine analyst - part 1
Engine systems diesel engine analyst - part 1
 
WordPress State of the Word 2012
WordPress State of the Word 2012WordPress State of the Word 2012
WordPress State of the Word 2012
 
Critical Thinking
Critical ThinkingCritical Thinking
Critical Thinking
 
Intellectual Property Rights
Intellectual Property RightsIntellectual Property Rights
Intellectual Property Rights
 
Diesel engine Powerpoint
Diesel engine PowerpointDiesel engine Powerpoint
Diesel engine Powerpoint
 
Basics Of Automobile
Basics Of AutomobileBasics Of Automobile
Basics Of Automobile
 
Digital Marketing Overview
Digital Marketing OverviewDigital Marketing Overview
Digital Marketing Overview
 

Similar a Extreme JavaScript Compression With YUI Compressor

High-Performance Python
High-Performance PythonHigh-Performance Python
High-Performance PythonWork-Bench
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"Fwdays
 
How to start developing your own ExpressionEngine addons
How to start developing your own ExpressionEngine addonsHow to start developing your own ExpressionEngine addons
How to start developing your own ExpressionEngine addonsLeevi Graham
 
Introduction to Ansible - Jan 28 - Austin MeetUp
Introduction to Ansible - Jan 28 - Austin MeetUpIntroduction to Ansible - Jan 28 - Austin MeetUp
Introduction to Ansible - Jan 28 - Austin MeetUptylerturk
 
OSMC 2009 | Nagios Plugins: New features and future projects by Thomas Guyot-...
OSMC 2009 | Nagios Plugins: New features and future projects by Thomas Guyot-...OSMC 2009 | Nagios Plugins: New features and future projects by Thomas Guyot-...
OSMC 2009 | Nagios Plugins: New features and future projects by Thomas Guyot-...NETWAYS
 
Rapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on RailsRapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on RailsSimobo
 
Some Rough Fibrous Material
Some Rough Fibrous MaterialSome Rough Fibrous Material
Some Rough Fibrous MaterialMurray Steele
 
CakePHP 2.0 - PHP Matsuri 2011
CakePHP 2.0 - PHP Matsuri 2011CakePHP 2.0 - PHP Matsuri 2011
CakePHP 2.0 - PHP Matsuri 2011Graham Weldon
 
So you want to liberate your data?
So you want to liberate your data?So you want to liberate your data?
So you want to liberate your data?Mogens Heller Grabe
 
London devops logging
London devops loggingLondon devops logging
London devops loggingTomas Doran
 
Lecture 15 run timeenvironment_2
Lecture 15 run timeenvironment_2Lecture 15 run timeenvironment_2
Lecture 15 run timeenvironment_2Iffat Anjum
 
Introduction to DRBD
Introduction to DRBDIntroduction to DRBD
Introduction to DRBDdawnlua
 

Similar a Extreme JavaScript Compression With YUI Compressor (20)

Kaggle nlp approaches
Kaggle nlp approachesKaggle nlp approaches
Kaggle nlp approaches
 
Ajaxworld07
Ajaxworld07Ajaxworld07
Ajaxworld07
 
Ajaxworld07
Ajaxworld07Ajaxworld07
Ajaxworld07
 
High-Performance Python
High-Performance PythonHigh-Performance Python
High-Performance Python
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"
 
How to start developing your own ExpressionEngine addons
How to start developing your own ExpressionEngine addonsHow to start developing your own ExpressionEngine addons
How to start developing your own ExpressionEngine addons
 
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
 
Introduction to Ansible - Jan 28 - Austin MeetUp
Introduction to Ansible - Jan 28 - Austin MeetUpIntroduction to Ansible - Jan 28 - Austin MeetUp
Introduction to Ansible - Jan 28 - Austin MeetUp
 
OSMC 2009 | Nagios Plugins: New features and future projects by Thomas Guyot-...
OSMC 2009 | Nagios Plugins: New features and future projects by Thomas Guyot-...OSMC 2009 | Nagios Plugins: New features and future projects by Thomas Guyot-...
OSMC 2009 | Nagios Plugins: New features and future projects by Thomas Guyot-...
 
Rapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on RailsRapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on Rails
 
Some Rough Fibrous Material
Some Rough Fibrous MaterialSome Rough Fibrous Material
Some Rough Fibrous Material
 
CakePHP 2.0 - PHP Matsuri 2011
CakePHP 2.0 - PHP Matsuri 2011CakePHP 2.0 - PHP Matsuri 2011
CakePHP 2.0 - PHP Matsuri 2011
 
Debugging rails
Debugging railsDebugging rails
Debugging rails
 
So you want to liberate your data?
So you want to liberate your data?So you want to liberate your data?
So you want to liberate your data?
 
JS Essence
JS EssenceJS Essence
JS Essence
 
08 subprograms
08 subprograms08 subprograms
08 subprograms
 
London devops logging
London devops loggingLondon devops logging
London devops logging
 
Lecture 15 run timeenvironment_2
Lecture 15 run timeenvironment_2Lecture 15 run timeenvironment_2
Lecture 15 run timeenvironment_2
 
Introduction to DRBD
Introduction to DRBDIntroduction to DRBD
Introduction to DRBD
 

Más de Nicholas Zakas

Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceNicholas Zakas
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!Nicholas Zakas
 
JavaScript APIs you’ve never heard of (and some you have)
JavaScript APIs you’ve never heard of (and some you have)JavaScript APIs you’ve never heard of (and some you have)
JavaScript APIs you’ve never heard of (and some you have)Nicholas Zakas
 
JavaScript Timers, Power Consumption, and Performance
JavaScript Timers, Power Consumption, and PerformanceJavaScript Timers, Power Consumption, and Performance
JavaScript Timers, Power Consumption, and PerformanceNicholas Zakas
 
Scalable JavaScript Application Architecture 2012
Scalable JavaScript Application Architecture 2012Scalable JavaScript Application Architecture 2012
Scalable JavaScript Application Architecture 2012Nicholas Zakas
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012Nicholas Zakas
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)Nicholas Zakas
 
Maintainable JavaScript 2011
Maintainable JavaScript 2011Maintainable JavaScript 2011
Maintainable JavaScript 2011Nicholas Zakas
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011Nicholas Zakas
 
Mobile Web Speed Bumps
Mobile Web Speed BumpsMobile Web Speed Bumps
Mobile Web Speed BumpsNicholas Zakas
 
High Performance JavaScript (Amazon DevCon 2011)
High Performance JavaScript (Amazon DevCon 2011)High Performance JavaScript (Amazon DevCon 2011)
High Performance JavaScript (Amazon DevCon 2011)Nicholas Zakas
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Nicholas Zakas
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Nicholas Zakas
 
YUI Test The Next Generation (YUIConf 2010)
YUI Test The Next Generation (YUIConf 2010)YUI Test The Next Generation (YUIConf 2010)
YUI Test The Next Generation (YUIConf 2010)Nicholas Zakas
 
High Performance JavaScript (YUIConf 2010)
High Performance JavaScript (YUIConf 2010)High Performance JavaScript (YUIConf 2010)
High Performance JavaScript (YUIConf 2010)Nicholas Zakas
 
High Performance JavaScript - Fronteers 2010
High Performance JavaScript - Fronteers 2010High Performance JavaScript - Fronteers 2010
High Performance JavaScript - Fronteers 2010Nicholas Zakas
 
Nicholas' Performance Talk at Google
Nicholas' Performance Talk at GoogleNicholas' Performance Talk at Google
Nicholas' Performance Talk at GoogleNicholas Zakas
 
High Performance JavaScript - WebDirections USA 2010
High Performance JavaScript - WebDirections USA 2010High Performance JavaScript - WebDirections USA 2010
High Performance JavaScript - WebDirections USA 2010Nicholas Zakas
 
Performance on the Yahoo! Homepage
Performance on the Yahoo! HomepagePerformance on the Yahoo! Homepage
Performance on the Yahoo! HomepageNicholas Zakas
 

Más de Nicholas Zakas (20)

Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 
The Pointerless Web
The Pointerless WebThe Pointerless Web
The Pointerless Web
 
JavaScript APIs you’ve never heard of (and some you have)
JavaScript APIs you’ve never heard of (and some you have)JavaScript APIs you’ve never heard of (and some you have)
JavaScript APIs you’ve never heard of (and some you have)
 
JavaScript Timers, Power Consumption, and Performance
JavaScript Timers, Power Consumption, and PerformanceJavaScript Timers, Power Consumption, and Performance
JavaScript Timers, Power Consumption, and Performance
 
Scalable JavaScript Application Architecture 2012
Scalable JavaScript Application Architecture 2012Scalable JavaScript Application Architecture 2012
Scalable JavaScript Application Architecture 2012
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)
 
Maintainable JavaScript 2011
Maintainable JavaScript 2011Maintainable JavaScript 2011
Maintainable JavaScript 2011
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011
 
Mobile Web Speed Bumps
Mobile Web Speed BumpsMobile Web Speed Bumps
Mobile Web Speed Bumps
 
High Performance JavaScript (Amazon DevCon 2011)
High Performance JavaScript (Amazon DevCon 2011)High Performance JavaScript (Amazon DevCon 2011)
High Performance JavaScript (Amazon DevCon 2011)
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
 
YUI Test The Next Generation (YUIConf 2010)
YUI Test The Next Generation (YUIConf 2010)YUI Test The Next Generation (YUIConf 2010)
YUI Test The Next Generation (YUIConf 2010)
 
High Performance JavaScript (YUIConf 2010)
High Performance JavaScript (YUIConf 2010)High Performance JavaScript (YUIConf 2010)
High Performance JavaScript (YUIConf 2010)
 
High Performance JavaScript - Fronteers 2010
High Performance JavaScript - Fronteers 2010High Performance JavaScript - Fronteers 2010
High Performance JavaScript - Fronteers 2010
 
Nicholas' Performance Talk at Google
Nicholas' Performance Talk at GoogleNicholas' Performance Talk at Google
Nicholas' Performance Talk at Google
 
High Performance JavaScript - WebDirections USA 2010
High Performance JavaScript - WebDirections USA 2010High Performance JavaScript - WebDirections USA 2010
High Performance JavaScript - WebDirections USA 2010
 
Performance on the Yahoo! Homepage
Performance on the Yahoo! HomepagePerformance on the Yahoo! Homepage
Performance on the Yahoo! Homepage
 

Último

Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City GurgaonCall Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaoncallgirls2057
 
MAHA Global and IPR: Do Actions Speak Louder Than Words?
MAHA Global and IPR: Do Actions Speak Louder Than Words?MAHA Global and IPR: Do Actions Speak Louder Than Words?
MAHA Global and IPR: Do Actions Speak Louder Than Words?Olivia Kresic
 
Appkodes Tinder Clone Script with Customisable Solutions.pptx
Appkodes Tinder Clone Script with Customisable Solutions.pptxAppkodes Tinder Clone Script with Customisable Solutions.pptx
Appkodes Tinder Clone Script with Customisable Solutions.pptxappkodes
 
Chapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditChapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditNhtLNguyn9
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Servicecallgirls2057
 
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCRashishs7044
 
PB Project 1: Exploring Your Personal Brand
PB Project 1: Exploring Your Personal BrandPB Project 1: Exploring Your Personal Brand
PB Project 1: Exploring Your Personal BrandSharisaBethune
 
Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMintel Group
 
International Business Environments and Operations 16th Global Edition test b...
International Business Environments and Operations 16th Global Edition test b...International Business Environments and Operations 16th Global Edition test b...
International Business Environments and Operations 16th Global Edition test b...ssuserf63bd7
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessSeta Wicaksana
 
Annual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesAnnual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesKeppelCorporation
 
Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Riya Pathan
 
8447779800, Low rate Call girls in Dwarka mor Delhi NCR
8447779800, Low rate Call girls in Dwarka mor Delhi NCR8447779800, Low rate Call girls in Dwarka mor Delhi NCR
8447779800, Low rate Call girls in Dwarka mor Delhi NCRashishs7044
 
Fordham -How effective decision-making is within the IT department - Analysis...
Fordham -How effective decision-making is within the IT department - Analysis...Fordham -How effective decision-making is within the IT department - Analysis...
Fordham -How effective decision-making is within the IT department - Analysis...Peter Ward
 
Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Seta Wicaksana
 
Church Building Grants To Assist With New Construction, Additions, And Restor...
Church Building Grants To Assist With New Construction, Additions, And Restor...Church Building Grants To Assist With New Construction, Additions, And Restor...
Church Building Grants To Assist With New Construction, Additions, And Restor...Americas Got Grants
 
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!Doge Mining Website
 
1911 Gold Corporate Presentation Apr 2024.pdf
1911 Gold Corporate Presentation Apr 2024.pdf1911 Gold Corporate Presentation Apr 2024.pdf
1911 Gold Corporate Presentation Apr 2024.pdfShaun Heinrichs
 

Último (20)

Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City GurgaonCall Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
 
MAHA Global and IPR: Do Actions Speak Louder Than Words?
MAHA Global and IPR: Do Actions Speak Louder Than Words?MAHA Global and IPR: Do Actions Speak Louder Than Words?
MAHA Global and IPR: Do Actions Speak Louder Than Words?
 
Appkodes Tinder Clone Script with Customisable Solutions.pptx
Appkodes Tinder Clone Script with Customisable Solutions.pptxAppkodes Tinder Clone Script with Customisable Solutions.pptx
Appkodes Tinder Clone Script with Customisable Solutions.pptx
 
Chapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditChapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal audit
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
 
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
 
Call Us ➥9319373153▻Call Girls In North Goa
Call Us ➥9319373153▻Call Girls In North GoaCall Us ➥9319373153▻Call Girls In North Goa
Call Us ➥9319373153▻Call Girls In North Goa
 
PB Project 1: Exploring Your Personal Brand
PB Project 1: Exploring Your Personal BrandPB Project 1: Exploring Your Personal Brand
PB Project 1: Exploring Your Personal Brand
 
Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 Edition
 
International Business Environments and Operations 16th Global Edition test b...
International Business Environments and Operations 16th Global Edition test b...International Business Environments and Operations 16th Global Edition test b...
International Business Environments and Operations 16th Global Edition test b...
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful Business
 
Annual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesAnnual General Meeting Presentation Slides
Annual General Meeting Presentation Slides
 
Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737
 
8447779800, Low rate Call girls in Dwarka mor Delhi NCR
8447779800, Low rate Call girls in Dwarka mor Delhi NCR8447779800, Low rate Call girls in Dwarka mor Delhi NCR
8447779800, Low rate Call girls in Dwarka mor Delhi NCR
 
Fordham -How effective decision-making is within the IT department - Analysis...
Fordham -How effective decision-making is within the IT department - Analysis...Fordham -How effective decision-making is within the IT department - Analysis...
Fordham -How effective decision-making is within the IT department - Analysis...
 
No-1 Call Girls In Goa 93193 VIP 73153 Escort service In North Goa Panaji, Ca...
No-1 Call Girls In Goa 93193 VIP 73153 Escort service In North Goa Panaji, Ca...No-1 Call Girls In Goa 93193 VIP 73153 Escort service In North Goa Panaji, Ca...
No-1 Call Girls In Goa 93193 VIP 73153 Escort service In North Goa Panaji, Ca...
 
Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...
 
Church Building Grants To Assist With New Construction, Additions, And Restor...
Church Building Grants To Assist With New Construction, Additions, And Restor...Church Building Grants To Assist With New Construction, Additions, And Restor...
Church Building Grants To Assist With New Construction, Additions, And Restor...
 
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
 
1911 Gold Corporate Presentation Apr 2024.pdf
1911 Gold Corporate Presentation Apr 2024.pdf1911 Gold Corporate Presentation Apr 2024.pdf
1911 Gold Corporate Presentation Apr 2024.pdf
 

Extreme JavaScript Compression With YUI Compressor