SlideShare a Scribd company logo
1 of 69
JavaScript Performance Patterns

         @stoyanstefanov
         frontendconf.ch
           Sept 6, 2012
JavaScript Performance Patterns
Importance of Performance




                    http://bookofspeed.com
Importance of JavaScript Performance




                         http://httparchive.org
// todo
1. Loading JavaScript
2. Runtime / UI / DOM
   + benchmarks
   + shims
Loading
First things first
•   reduce # of script files
•   gzip, shave 70% off
•   minify, extra 40-50%
•   Expires headers
•   CDN


                                   http://yslow.org
                                      PageSpeed
                               http://webpagetest.org
<script src="http://…">
SPOF
• Single point of failure
• JS blocks




                                                        http://phpied.com/3po-fail
                                                                    SPOF-O-Matic:
  https://chrome.google.com/webstore/detail/plikhggfbplemddobondkeogomgoodeg
Off the critical path
Asynchronous JS
• <script defer>
• <script async>
• until then…
Dynamic script node
var js = document.createElement('script');
js.src = 'http://cdn.com/my.js';
document.getElementsByTagName('head')[0].appendChild(js);




                                  http://calendar.perfplanet.com/2011/t
                                  he-art-and-craft-of-the-async-snippet/
But…, butt…, button?
Q: <button onclick="…"?
A: To hell with it

Q: Dependencies?
A: onload event and js.onreadystatechange

load('jquery.js', 'mystuff.js', function () {
  mystuff.go();
});
Unblocking onload
• Async JS blocks window.onload in !IE
• May or may not be a problem
• There's a solution: FIF
<fif>

frame-in-frame aka friendly frames
      aka this Meebo thing
FIF
1)   create
     iframe src="js:false"
2)   in the frame doc.write a
     <body onload …
3)   …that loads JS
FIF (snippet)
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var doc = iframe.contentWindow.document;
doc.open().write('<body onload="'+
 'var js = document.createElement('script');'+
 'js.src = 'http://example.org/js.js';'+
 'document.body.appendChild(js);">');
doc.close();
FIF
• unblocks onload, but…
• more complex
• requires JS changes
your script (before)


// fun with window
// and document
your script (before)
(function() {

  // fun with window
  // and document
}());
FIF (after)
(function(window) {
  var document = window.document;
  // fun with window
  // and document
}(parent.window));
FIF in the wild
• experimental support in FB JS SDK
• http://jsbin.com/axibow/1/edit
</fif>
Load JS but not execute
• Use cases:
  – preload in anticipation
  – lazy
Preload, then eventually execute
1. fetch the script, but don’t run it
2. run it at some point (same as async JS)
Fetching
• IE: dynamic script node, not in the DOM
• All others: CORS (XHR2)
  – your CDN should let you specify
    Access-Control-Allow-Origin
    header or else!
Preload, then execute
// preload
var js = document.createElement('script');
if (!js.readyState || js.readyState !== 'uninitialized') { // non IE
  var xhr = new XMLHttpRequest();
  if ('withCredentials' in xhr) { // XHR2
    xhr.open('GET', url, false);
    xhr.send(null);
  }
}
js.src = url; // IE preloads! Thanks @getify

// execute
document.getElementsByTagName('head')[0].appendChild(js);
// todo
1. Loading JavaScript
2. Runtime / UI / DOM
   + benchmarks
   + shims
Benchmarks
•   Lies, damn lies and performance advice
•   Test the wrong thing
•   Measure the wrong thing
•   Even if not, still draw the wrong conclusions
Your first benchmark
var start = new Date();
// loop 100000 times
var took = new Date() – start;
Benchmark.js
• by John-David Dalton
• used in http://jsperf.com
  – calibrating the test
  – end time (ops/second)
  – statistical significance
  – margin of error
http://calendar.perfplanet.com/2010/bulletpro
                     of-javascript-benchmarks/
Benchmarking browsers?



       No, thanks
Let's test!
String concat
var text = "";
text += "moar";

vs.

var parts = [];
parts.push('moar');
var text = push.join('');

                        http://jsperf.com/join-concat/
String concat
The pen is mightier than the sword! *



* Only if the sword is very small and the pen very sharp
"Don't A, B is so much faster!"



      You should check it again
Profiling
Picking battles
DOM
DOM
• DOM is slow
• How slow?
• http://jsperf.com/touching/4
DOM
// DOM
div.innerHTML += 'a';
div.innerHTML += 'b';

// string
var html = '';
html += 'a';
html += 'b';
div.innerHTML = html;
DOM
DOM + string concat
• put things in perspective   http://jsperf.com/touching/5
ECMAland   DOMland
DOM
•   caching DOM references
•   caching length in collection loops
•   "offline" changes in document fragment
•   batch style changes
•   reducing reflows and repaints
reflows
   getComputedStyle(), or currentStyle in IE


   bodystyle.color = 'red';
   tmp = computed.backgroundColor;
   bodystyle.color = 'white';
   tmp = computed.backgroundImage;
   bodystyle.color = 'green';
   tmp = computed.backgroundAttachment;




   bodystyle.color = 'red';
   bodystyle.color = 'white';
   bodystyle.color = 'green';
   tmp = computed.backgroundColor;
   tmp = computed.backgroundImage;
   tmp = computed.backgroundAttachment;
data attributes
<div data-stuff="convenient"></div>

• div.dataset.stuff
• div.getAttribute('data-stuff')
• Data.get(div).stuff // DIY
data attributes DIY
var Data = function() {
  var warehouse = {};
  var count = 1;
  return {
    set: function (dom, data) {
      if (!dom.__data) {
        dom.__data = "hello" + count++;
      }
      warehouse[dom.__data] = data;
    },
    get: function(dom) {
      return warehouse[dom.__data];
    }
  };
}();
data attributes
data attributes
            http://jsperf.com/data-dataset
Shims and polyfills
Shims
• pick the smaller/optimized one
• one that uses native where available *
• load conditionally

e.g. JSON is non-native only for 8% of users
*, why load shim 100% of the time


                                     * http://html5please.us
Fast ECMAScript5 natives?
• JDD: "browsers optimize loops because of
  benchmarks"
• http://jsperf.com/native-for-loop-vs-array-
  foreach-and-array-map-vs-lodas/2
jQuery: the most popular polyfill
• not free (perf-wise)
• do you need it?
Cost of parsing and evaluating
                  http://calendar.perfplanet.com/2011/laz
                  y-evaluation-of-commonjs-modules/
Cost of parsing and evaluating
Experiment: jQuery vs. Zepto



What’s the cost of just dropping it on the page?
jsperf.com/zepto-jq-eval



          […]
jsperf.com/zepto-jq-eval
jsperf.com/zepto-jq-eval
In closure…
• JS off the critical path
  (async, lazy, preload)
• Practice writing jsperf.com tests
  ("jsperf URL or it didn't happen!")
• Don't touch the DOM (remember the bridge)
• Use the tools (Timeline, CPU/heap
  profiler, SpeedTracer, Dynatrace)
• Think of poor mobile
  (easy with the shims)
Thank you!



http://slideshare.net/stoyan/

More Related Content

What's hot

the 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp IIthe 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp IIDirk Ginader
 
HTML5와 오픈소스 기반의 Web Components 기술
HTML5와 오픈소스 기반의 Web Components 기술HTML5와 오픈소스 기반의 Web Components 기술
HTML5와 오픈소스 기반의 Web Components 기술Jeongkyu Shin
 
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
 
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015beyond tellerrand
 
Front end performance optimization
Front end performance optimizationFront end performance optimization
Front end performance optimizationStevie T
 
[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄Jae Woo Woo
 
Accessibility - A feature you can build
Accessibility - A feature you can buildAccessibility - A feature you can build
Accessibility - A feature you can buildMonika Piotrowicz
 
Hash Signaling Made Easy
Hash Signaling Made EasyHash Signaling Made Easy
Hash Signaling Made Easydavidgouldin
 
Scraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHPScraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHPPaul Redmond
 
Front end performance tip
Front end performance tipFront end performance tip
Front end performance tipSteve Yu
 
Rails Girls: Programming, Web Applications and Ruby on Rails
Rails Girls: Programming, Web Applications and Ruby on RailsRails Girls: Programming, Web Applications and Ruby on Rails
Rails Girls: Programming, Web Applications and Ruby on RailsDonSchado
 
jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009Ralph Whitbeck
 
Web Page Test - Beyond the Basics
Web Page Test - Beyond the BasicsWeb Page Test - Beyond the Basics
Web Page Test - Beyond the BasicsAndy Davies
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5dynamis
 
Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Ontico
 

What's hot (20)

Nodejs.meetup
Nodejs.meetupNodejs.meetup
Nodejs.meetup
 
the 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp IIthe 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp II
 
HTML5와 오픈소스 기반의 Web Components 기술
HTML5와 오픈소스 기반의 Web Components 기술HTML5와 오픈소스 기반의 Web Components 기술
HTML5와 오픈소스 기반의 Web Components 기술
 
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)
 
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
 
ActiveDOM
ActiveDOMActiveDOM
ActiveDOM
 
jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
 
Front end performance optimization
Front end performance optimizationFront end performance optimization
Front end performance optimization
 
[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄
 
Front End Performance
Front End PerformanceFront End Performance
Front End Performance
 
Accessibility - A feature you can build
Accessibility - A feature you can buildAccessibility - A feature you can build
Accessibility - A feature you can build
 
Hash Signaling Made Easy
Hash Signaling Made EasyHash Signaling Made Easy
Hash Signaling Made Easy
 
Scraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHPScraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHP
 
Front end performance tip
Front end performance tipFront end performance tip
Front end performance tip
 
Rails Girls: Programming, Web Applications and Ruby on Rails
Rails Girls: Programming, Web Applications and Ruby on RailsRails Girls: Programming, Web Applications and Ruby on Rails
Rails Girls: Programming, Web Applications and Ruby on Rails
 
Geb presentation
Geb presentationGeb presentation
Geb presentation
 
jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009
 
Web Page Test - Beyond the Basics
Web Page Test - Beyond the BasicsWeb Page Test - Beyond the Basics
Web Page Test - Beyond the Basics
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)
 

Viewers also liked

Leveraging Social Media Marketing Trends
Leveraging Social Media Marketing TrendsLeveraging Social Media Marketing Trends
Leveraging Social Media Marketing TrendsErica Campbell Byrum
 
презентация1
презентация1презентация1
презентация1KirillPavlov
 
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social MediaREDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social MediaDr. Mazlan Abbas
 
Mapa conceptual 2 de alejandra alvarez
Mapa conceptual 2 de alejandra alvarezMapa conceptual 2 de alejandra alvarez
Mapa conceptual 2 de alejandra alvarezLaChicaHolix99
 
Performance Implications of Mobile Design (Perf Audience Edition)
Performance Implications of Mobile Design (Perf Audience Edition)Performance Implications of Mobile Design (Perf Audience Edition)
Performance Implications of Mobile Design (Perf Audience Edition)Guy Podjarny
 
28704893 sixth-sense-final-ppt
28704893 sixth-sense-final-ppt28704893 sixth-sense-final-ppt
28704893 sixth-sense-final-pptvignan university
 
Water security for Delhi: a case study of government projects
Water security for Delhi: a case study of government projectsWater security for Delhi: a case study of government projects
Water security for Delhi: a case study of government projectsAnupam Saraph
 
Tnooz-Expedia FREE webinar: Impact of multi-screens on the travel purchase path
Tnooz-Expedia FREE webinar: Impact of multi-screens on the travel purchase pathTnooz-Expedia FREE webinar: Impact of multi-screens on the travel purchase path
Tnooz-Expedia FREE webinar: Impact of multi-screens on the travel purchase pathtnooz
 
10 Office Holiday Party Rules
10 Office Holiday Party Rules10 Office Holiday Party Rules
10 Office Holiday Party RulesRobert Half
 
A project report on construction of balanced portfolio comprising of equity a...
A project report on construction of balanced portfolio comprising of equity a...A project report on construction of balanced portfolio comprising of equity a...
A project report on construction of balanced portfolio comprising of equity a...Babasab Patil
 
A project report on consumer attitude towards branded accessories with specif...
A project report on consumer attitude towards branded accessories with specif...A project report on consumer attitude towards branded accessories with specif...
A project report on consumer attitude towards branded accessories with specif...Babasab Patil
 
Leveraging Social Media for Email Marketing Success
Leveraging Social Media for Email Marketing SuccessLeveraging Social Media for Email Marketing Success
Leveraging Social Media for Email Marketing SuccessAdam Holden-Bache
 
Tracxn Startup Research — Mom and Baby Care Landscape, August 2016
Tracxn Startup Research —  Mom and Baby Care Landscape, August 2016Tracxn Startup Research —  Mom and Baby Care Landscape, August 2016
Tracxn Startup Research — Mom and Baby Care Landscape, August 2016Tracxn
 
A project report on customer awareness and perception towards forbes campbell...
A project report on customer awareness and perception towards forbes campbell...A project report on customer awareness and perception towards forbes campbell...
A project report on customer awareness and perception towards forbes campbell...Babasab Patil
 
Kota dan Inovasi: Inovasi sebagai Gaya Hidup Baru Kota Modern
Kota dan Inovasi: Inovasi sebagai Gaya Hidup Baru Kota ModernKota dan Inovasi: Inovasi sebagai Gaya Hidup Baru Kota Modern
Kota dan Inovasi: Inovasi sebagai Gaya Hidup Baru Kota ModernTri Widodo W. UTOMO
 

Viewers also liked (20)

Leveraging Social Media Marketing Trends
Leveraging Social Media Marketing TrendsLeveraging Social Media Marketing Trends
Leveraging Social Media Marketing Trends
 
презентация1
презентация1презентация1
презентация1
 
Donar vida.
Donar vida.Donar vida.
Donar vida.
 
Hanckemaborg Zuidhorn
Hanckemaborg ZuidhornHanckemaborg Zuidhorn
Hanckemaborg Zuidhorn
 
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social MediaREDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
 
Mapa conceptual 2 de alejandra alvarez
Mapa conceptual 2 de alejandra alvarezMapa conceptual 2 de alejandra alvarez
Mapa conceptual 2 de alejandra alvarez
 
Gptw conference 14_oct2011-hyderabad_final
Gptw conference 14_oct2011-hyderabad_finalGptw conference 14_oct2011-hyderabad_final
Gptw conference 14_oct2011-hyderabad_final
 
Performance Implications of Mobile Design (Perf Audience Edition)
Performance Implications of Mobile Design (Perf Audience Edition)Performance Implications of Mobile Design (Perf Audience Edition)
Performance Implications of Mobile Design (Perf Audience Edition)
 
28704893 sixth-sense-final-ppt
28704893 sixth-sense-final-ppt28704893 sixth-sense-final-ppt
28704893 sixth-sense-final-ppt
 
Water security for Delhi: a case study of government projects
Water security for Delhi: a case study of government projectsWater security for Delhi: a case study of government projects
Water security for Delhi: a case study of government projects
 
Tnooz-Expedia FREE webinar: Impact of multi-screens on the travel purchase path
Tnooz-Expedia FREE webinar: Impact of multi-screens on the travel purchase pathTnooz-Expedia FREE webinar: Impact of multi-screens on the travel purchase path
Tnooz-Expedia FREE webinar: Impact of multi-screens on the travel purchase path
 
10 Office Holiday Party Rules
10 Office Holiday Party Rules10 Office Holiday Party Rules
10 Office Holiday Party Rules
 
16 00361 beslut
16 00361 beslut16 00361 beslut
16 00361 beslut
 
A project report on construction of balanced portfolio comprising of equity a...
A project report on construction of balanced portfolio comprising of equity a...A project report on construction of balanced portfolio comprising of equity a...
A project report on construction of balanced portfolio comprising of equity a...
 
A project report on consumer attitude towards branded accessories with specif...
A project report on consumer attitude towards branded accessories with specif...A project report on consumer attitude towards branded accessories with specif...
A project report on consumer attitude towards branded accessories with specif...
 
Leveraging Social Media for Email Marketing Success
Leveraging Social Media for Email Marketing SuccessLeveraging Social Media for Email Marketing Success
Leveraging Social Media for Email Marketing Success
 
CALL and SLA
CALL and SLACALL and SLA
CALL and SLA
 
Tracxn Startup Research — Mom and Baby Care Landscape, August 2016
Tracxn Startup Research —  Mom and Baby Care Landscape, August 2016Tracxn Startup Research —  Mom and Baby Care Landscape, August 2016
Tracxn Startup Research — Mom and Baby Care Landscape, August 2016
 
A project report on customer awareness and perception towards forbes campbell...
A project report on customer awareness and perception towards forbes campbell...A project report on customer awareness and perception towards forbes campbell...
A project report on customer awareness and perception towards forbes campbell...
 
Kota dan Inovasi: Inovasi sebagai Gaya Hidup Baru Kota Modern
Kota dan Inovasi: Inovasi sebagai Gaya Hidup Baru Kota ModernKota dan Inovasi: Inovasi sebagai Gaya Hidup Baru Kota Modern
Kota dan Inovasi: Inovasi sebagai Gaya Hidup Baru Kota Modern
 

Similar to JavaScript performance patterns

Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBob Paulin
 
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersSXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersElena-Oana Tabaranu
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and RenderingStoyan Stefanov
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVCAlive Kuo
 
Developing High Performance Web Apps
Developing High Performance Web AppsDeveloping High Performance Web Apps
Developing High Performance Web AppsTimothy Fisher
 
Everything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebEverything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebJames Rakich
 
Express Presentation
Express PresentationExpress Presentation
Express Presentationaaronheckmann
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Timothy Fisher
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenerytoddbr
 
Appsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaolaAppsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaoladrewz lin
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup PerformanceJustin Cataldo
 
Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014Rob Gietema
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetTom Croucher
 

Similar to JavaScript performance patterns (20)

Performance patterns
Performance patternsPerformance patterns
Performance patterns
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
 
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersSXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBusters
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and Rendering
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
Developing High Performance Web Apps
Developing High Performance Web AppsDeveloping High Performance Web Apps
Developing High Performance Web Apps
 
Sanjeev ghai 12
Sanjeev ghai 12Sanjeev ghai 12
Sanjeev ghai 12
 
Everything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebEverything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the Web
 
Express Presentation
Express PresentationExpress Presentation
Express Presentation
 
Web-Performance
Web-PerformanceWeb-Performance
Web-Performance
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
JS Essence
JS EssenceJS Essence
JS Essence
 
JavaScript-Core
JavaScript-CoreJavaScript-Core
JavaScript-Core
 
JavaScript-Core
JavaScript-CoreJavaScript-Core
JavaScript-Core
 
Appsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaolaAppsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaola
 
前端概述
前端概述前端概述
前端概述
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 

More from Stoyan Stefanov

JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъдеStoyan Stefanov
 
JavaScript is everywhere
JavaScript is everywhereJavaScript is everywhere
JavaScript is everywhereStoyan Stefanov
 
JavaScript shell scripting
JavaScript shell scriptingJavaScript shell scripting
JavaScript shell scriptingStoyan Stefanov
 
JavaScript for PHP developers
JavaScript for PHP developersJavaScript for PHP developers
JavaScript for PHP developersStoyan Stefanov
 
Voices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesVoices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesStoyan Stefanov
 
Psychology of performance
Psychology of performancePsychology of performance
Psychology of performanceStoyan Stefanov
 
CSS and image optimization
CSS and image optimizationCSS and image optimization
CSS and image optimizationStoyan Stefanov
 
High-performance DOM scripting
High-performance DOM scriptingHigh-performance DOM scripting
High-performance DOM scriptingStoyan Stefanov
 
The business of performance
The business of performanceThe business of performance
The business of performanceStoyan Stefanov
 
Ignite Velocity: Image Weight Loss Clinic
Ignite Velocity: Image Weight Loss ClinicIgnite Velocity: Image Weight Loss Clinic
Ignite Velocity: Image Weight Loss ClinicStoyan Stefanov
 
Don't make me wait! or Building High-Performance Web Applications
Don't make me wait! or Building High-Performance Web ApplicationsDon't make me wait! or Building High-Performance Web Applications
Don't make me wait! or Building High-Performance Web ApplicationsStoyan Stefanov
 
High Performance Kick Ass Web Apps (JavaScript edition)
High Performance Kick Ass Web Apps (JavaScript edition)High Performance Kick Ass Web Apps (JavaScript edition)
High Performance Kick Ass Web Apps (JavaScript edition)Stoyan Stefanov
 
Beginning Object-Oriented JavaScript
Beginning Object-Oriented JavaScriptBeginning Object-Oriented JavaScript
Beginning Object-Oriented JavaScriptStoyan Stefanov
 

More from Stoyan Stefanov (20)

Reactive JavaScript
Reactive JavaScriptReactive JavaScript
Reactive JavaScript
 
YSlow hacking
YSlow hackingYSlow hacking
YSlow hacking
 
Social Button BFFs
Social Button BFFsSocial Button BFFs
Social Button BFFs
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъде
 
JavaScript is everywhere
JavaScript is everywhereJavaScript is everywhere
JavaScript is everywhere
 
JavaScript shell scripting
JavaScript shell scriptingJavaScript shell scripting
JavaScript shell scripting
 
JavaScript for PHP developers
JavaScript for PHP developersJavaScript for PHP developers
JavaScript for PHP developers
 
WPO @ PubCon 2010
WPO @ PubCon 2010WPO @ PubCon 2010
WPO @ PubCon 2010
 
Voices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesVoices that matter: High Performance Web Sites
Voices that matter: High Performance Web Sites
 
Psychology of performance
Psychology of performancePsychology of performance
Psychology of performance
 
3-in-1 YSlow
3-in-1 YSlow3-in-1 YSlow
3-in-1 YSlow
 
CSS and image optimization
CSS and image optimizationCSS and image optimization
CSS and image optimization
 
High-performance DOM scripting
High-performance DOM scriptingHigh-performance DOM scripting
High-performance DOM scripting
 
The business of performance
The business of performanceThe business of performance
The business of performance
 
JavaScript Patterns
JavaScript PatternsJavaScript Patterns
JavaScript Patterns
 
Ignite Velocity: Image Weight Loss Clinic
Ignite Velocity: Image Weight Loss ClinicIgnite Velocity: Image Weight Loss Clinic
Ignite Velocity: Image Weight Loss Clinic
 
Don't make me wait! or Building High-Performance Web Applications
Don't make me wait! or Building High-Performance Web ApplicationsDon't make me wait! or Building High-Performance Web Applications
Don't make me wait! or Building High-Performance Web Applications
 
High Performance Kick Ass Web Apps (JavaScript edition)
High Performance Kick Ass Web Apps (JavaScript edition)High Performance Kick Ass Web Apps (JavaScript edition)
High Performance Kick Ass Web Apps (JavaScript edition)
 
YSlow 2.0
YSlow 2.0YSlow 2.0
YSlow 2.0
 
Beginning Object-Oriented JavaScript
Beginning Object-Oriented JavaScriptBeginning Object-Oriented JavaScript
Beginning Object-Oriented JavaScript
 

Recently uploaded

Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsUXDXConf
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyUXDXConf
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...marcuskenyatta275
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessUXDXConf
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty SecureFemke de Vroome
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastUXDXConf
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 

Recently uploaded (20)

Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 

JavaScript performance patterns