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 Girls in DELHI Cantt, ( Call Me )-8377877756-Female Escort- In Delhi / Ncr
Call Girls in DELHI Cantt, ( Call Me )-8377877756-Female Escort- In Delhi / NcrCall Girls in DELHI Cantt, ( Call Me )-8377877756-Female Escort- In Delhi / Ncr
Call Girls in DELHI Cantt, ( Call Me )-8377877756-Female Escort- In Delhi / Ncrdollysharma2066
 
Annual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesAnnual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesKeppelCorporation
 
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCRashishs7044
 
Marketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent ChirchirMarketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent Chirchirictsugar
 
Digital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfDigital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfJos Voskuil
 
Global Scenario On Sustainable and Resilient Coconut Industry by Dr. Jelfina...
Global Scenario On Sustainable  and Resilient Coconut Industry by Dr. Jelfina...Global Scenario On Sustainable  and Resilient Coconut Industry by Dr. Jelfina...
Global Scenario On Sustainable and Resilient Coconut Industry by Dr. Jelfina...ictsugar
 
Memorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMMemorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMVoces Mineras
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCRashishs7044
 
Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Anamaria Contreras
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessSeta Wicaksana
 
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607dollysharma2066
 
8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCRashishs7044
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607dollysharma2066
 
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
 
IoT Insurance Observatory: summary 2024
IoT Insurance Observatory:  summary 2024IoT Insurance Observatory:  summary 2024
IoT Insurance Observatory: summary 2024Matteo Carbone
 
2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis UsageNeil Kimberley
 
Case study on tata clothing brand zudio in detail
Case study on tata clothing brand zudio in detailCase study on tata clothing brand zudio in detail
Case study on tata clothing brand zudio in detailAriel592675
 
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
 

Último (20)

Call Girls in DELHI Cantt, ( Call Me )-8377877756-Female Escort- In Delhi / Ncr
Call Girls in DELHI Cantt, ( Call Me )-8377877756-Female Escort- In Delhi / NcrCall Girls in DELHI Cantt, ( Call Me )-8377877756-Female Escort- In Delhi / Ncr
Call Girls in DELHI Cantt, ( Call Me )-8377877756-Female Escort- In Delhi / Ncr
 
Annual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesAnnual General Meeting Presentation Slides
Annual General Meeting Presentation Slides
 
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
 
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...
 
Marketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent ChirchirMarketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent Chirchir
 
Digital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfDigital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdf
 
Japan IT Week 2024 Brochure by 47Billion (English)
Japan IT Week 2024 Brochure by 47Billion (English)Japan IT Week 2024 Brochure by 47Billion (English)
Japan IT Week 2024 Brochure by 47Billion (English)
 
Global Scenario On Sustainable and Resilient Coconut Industry by Dr. Jelfina...
Global Scenario On Sustainable  and Resilient Coconut Industry by Dr. Jelfina...Global Scenario On Sustainable  and Resilient Coconut Industry by Dr. Jelfina...
Global Scenario On Sustainable and Resilient Coconut Industry by Dr. Jelfina...
 
Memorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMMemorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQM
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
 
Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful Business
 
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
 
8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
 
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
 
IoT Insurance Observatory: summary 2024
IoT Insurance Observatory:  summary 2024IoT Insurance Observatory:  summary 2024
IoT Insurance Observatory: summary 2024
 
2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage
 
Case study on tata clothing brand zudio in detail
Case study on tata clothing brand zudio in detailCase study on tata clothing brand zudio in detail
Case study on tata clothing brand zudio in detail
 
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...
 

Extreme JavaScript Compression With YUI Compressor