SlideShare a Scribd company logo
flickr.com/photos/barbourians/6662357209/




                                 Timers,
                                 Power Consumption,
                                 and Performance

Nicholas C. Zakas
Chief Architect, WellFurnished
New
@slicknet
 (Complaints:
  @souders)
UI Thread

             Execute
Update UI
            JavaScript




                     flickr.com/photos/jepoirrier/954701212/
flickr.com/photos/55733754@N00/3325000738/
<button id="btn" style="font-size: 30px; padding: 0.5em
    1em">Click Me</button>

<script>
window.onload = function(){
   document.getElementById("btn").onclick = function(){
       //do something
   };
};
</script>
Before Click
UI Thread



time
                           UI Queue
When Clicked
UI Thread



time
                           UI Queue
                              Update UI

                               onclick

                              Update UI
When Clicked
UI Thread
   Update UI


time
                                           UI Queue
               Draw down state                 onclick

                                              Update UI
When Clicked
UI Thread
   Update UI   onclick


time
                                   UI Queue
                                      Update UI
When Clicked
UI Thread
   Update UI   onclick            Update UI


time
                                              UI Queue

                         Draw up state
No UI updates while JavaScript is
          executing
JavaScript May Cause UI Update
<button id="btn" style="font-size: 30px; padding: 0.5em
    1em">Click Me</button>

<script>
window.onload = function(){
   document.getElementById("btn").onclick = function(){
       var div = document.createElement("div");
       div.className = "tip";
       div.innerHTML = "You clicked me!";
       document.body.appendChild(div);
   };
};
</script>
Each UI update applies

ALL CHANGES
 since the last UI update
I gonna make
      a
namination!!




  flickr.com/photos/oakleyoriginals/3065393607/
function naminate(element){

    // start here
    element.style.left = "10px";

    // move to here
    element.style.left = "30px";

    // then to here
    element.style.left = "50px";

    // finally to here
    element.style.left = "70px";
}
JavaScript Timers, Power Consumption, and Performance
JavaScript Timers, Power Consumption, and Performance
Why
you no
work???

flickr.com/photos/tudor/318123668/
function namimate(element){

    // start here
    element.style.left = "10px";

    // move to here
    element.style.left = "30px";

    // then to here
    element.style.left = "50px";
                                   Last state
    // finally to here               wins
    element.style.left = "70px";
}
JavaScript Timers, Power Consumption, and Performance
setTimeout()
Code to
                                   execute
var tId = setTimeout(function(){

  // do something
                           Delay in
}, 1500);
                          milliseconds
// optional
clearTimeout(tId)
setTimeout()
        DOES NOT SAY
“Run this code after this delay”
setTimeout()
             DOES SAY
“Add this code to the queue after this
               delay”
<button id="btn" style="font-size: 30px; padding: 0.5em
    1em">Click Me</button>

<script>
window.onload = function(){
   document.getElementById("btn").onclick = function(){
      setTimeout(function() {
          //do something
      }, 25);
   };
};
</script>
When Clicked
UI Thread



time
                           UI Queue
                              Update UI

                               onclick

                              Update UI
When Clicked
UI Thread
   Update UI


time
                                           UI Queue
               Draw down state                 onclick

                                              Update UI
When Clicked
UI Thread
   Update UI   onclick


time
                                        UI Queue
                                           Update UI
When Clicked
UI Thread
   Update UI   onclick     Update UI


time
                                        UI Queue

                  Draw up state
After 25ms
UI Thread
   Update UI   onclick   Update UI


time
                                                 UI Queue
                                                    JavaScript


                              Added to back of
                                  queue
Future
UI Thread
   Update UI   onclick   Update UI   JavaScript


time
                                     UI Queue
Future
UI Thread
   Update UI   onclick    Update UI                    JavaScript


time
                                                       UI Queue
                                                            Update UI


                          If the JavaScript changes
                         the UI, it triggers another
                                    update
setTimeout() sends your code into the future
setTimeout(function(){
    element.style.left = "10px";
}, 50);

setTimeout(function(){
    element.style.left = "30px";
}, 100);

setTimeout(function(){
    element.style.left = "50px";
}, 150);

setTimeout(function(){
    element.style.left = "70px";
}, 200);
JavaScript Timers, Power Consumption, and Performance
Animation Loop
(function(){
    var delay = 100;

   function moveTheThing(){

       // actually move the thing

       setTimeout(moveTheThing, delay);
   }

    setTimeout(moveTheThing, delay);
}());
(function(){
    var msg = "Some reasonably long text that keeps scrolling.",
        len = 25,
        pos = 0,
        padding = msg.replace(/./g, " ").substr(0,len)
        finalMsg = padding + msg,
        delay = 100;

   function updateText(){
       var curMsg = finalMsg.substr(pos++, len);
       window.status = curMsg;
       if (pos == finalMsg.length){
           pos = 0;
       }
       setTimeout(updateText, delay);
   }

   setTimeout(updateText, delay);

}());
And More!
setTimout() all the things!!!
Problems
JavaScript Timers, Power Consumption, and Performance
The default system-wide timer resolution in Windows is 15.6 ms, which
means that every 15.6 ms the operating system receives a clock interrupt
from the system timer hardware.

-Timers, Timer Resolution, and Development of Efficient Code (Microsoft)
var tId = setTimeout(function(){

  // do something

}, 10);

               What does it
                 mean?
http://ejohn.org/blog/accuracy-of-javascript-time/
JavaScript Timers, Power Consumption, and Performance
JavaScript Timers, Power Consumption, and Performance
JavaScript Timers, Power Consumption, and Performance
Animation Loop
(function(){
    var delay = 17;
                                         Pretty
   function moveTheThing(){
                                       please?!?!
       // actually move the thing

       setTimeout(moveTheThing, delay);
   }

    setTimeout(moveTheThing, delay);
}());
http://ejohn.org/blog/analyzing-timer-performance/
JavaScript Timers, Power Consumption, and Performance
JavaScript Timers, Power Consumption, and Performance
1ms all the timers!!!
http://www.belshe.com/2010/06/04/chrome-cranking-up-the-clock/
timeBeginPeriod()
timeBeginPeriod(1)
setTimout() all the things!!!
flickr.com/photos/antonfomkin/3046849320/
Modern CPUs are narcoleptic
x86 CPU States
        C0         Active
        C1          Halt
        C2       Stop-Clock
        C3         Sleep
Low
        C4       Deep Sleep
Power
        C5   Enhanced Deep Sleep
        C6    Deep Power Down
http://software.intel.com/en-us/articles/cpu-power-utilization-on-intel-architectures/
CPUs go to sleep when idle
The default timer resolution on Windows 7 is 15.6 milliseconds (ms).
Some applications reduce this to 1 ms, which reduces the battery run
time on mobile systems by as much as 25 percent.

-Timers, Timer Resolution, and Development of Efficient Code (Microsoft)


                    Laptops!
JavaScript Timers, Power Consumption, and Performance
Web Timer Resolution Today



Plugged In     4ms    4ms     4ms    4ms           4ms

Battery        4ms   15.6ms   4ms   15.6ms         4ms

Background      1s     1s     4ms    1s*           4ms
                                      * Internet Explorer 10
JavaScript Timers, Power Consumption, and Performance
Web Timer Resolution Today




Battery          4ms   10ms   10ms       10ms           4ms

Background Tab    -    10ms   10ms       10ms            1s

Background App    -     *      *            *            1s
                                * “Catches up” when switched back
Experiment
• Hard shutdown and restart so
  no other apps are running
• Turn off brightness auto-adjust
• Turn off screen locking
• Leave WiFi/Mobile on
• Load test page in browser
• Profit!
Experiment
• Test single timer at different
  intervals:
    • 1000ms – 10ms
Low Frequency   >= 1000ms

High Frequency < 1000ms
Time For 10% Power Use
               By Frequency




Minutes   52-56     42-48          62-65
Timer frequency doesn’t matter
http://googlecode.blogspot.com/2009/07/gmail-for-mobile-html5-series-using.html
Experiment
• Test single timer at different
  intervals:
    • 1000ms – 10ms
• Test multiple timers at different
  intervals
    • 1000ms – 10ms x 10
Time For 10% Power Use
                 By Count


                  (same)
Minutes   52-56     42-48          62-65
Number of timers doesn’t matter
JavaScript Timers, Power Consumption, and Performance
Number of timers does matter
        (accuracy)
http://ejohn.org/apps/timers
http://ejohn.org/apps/timers
http://ejohn.org/apps/timers
Flooding the Queue
UI Thread



time
                                 UI Queue
                                      timer

                                      timer

                                      timer
Too many timers affects rendering
Elsewhere…
http://www.w3.org/TR/css3-animations/
Optimized animations using CSS
div {
    animation-name: diagonal-slide;
    animation-duration: 5s;
    animation-iteration-count: 10;
}

@keyframes diagonal-slide {
                                       Hey browser!
    from {                            I’m animating!
        left: 0;
        top: 0;
    }

     to {
            left: 100px;
            top: 100px;
     }
 }
Hey
                                     browser!
                                   I want to do
var tId = setTimeout(function(){
                                    something
  // do something                      later
}, 1500);


     Could be animation.
      Could be polling.
       Don’t sweat it.
http://www.w3.org/2010/webperf/
moz         webkit




http://www.w3.org/TR/animation-timing/
Code to
                                  execute
var rId = requestAnimationFrame(function(time){

  // do something

});

// optional
                                      Time when
clearAnimationFrame(rId)             the paint will
                                        happen
New Animation Loop
(function(){

   function moveTheThing(){          Hey browser!
                                    I’m animating!
       // actually move the thing

       requestAnimationFrame(moveTheThing);
   }

    requestAnimationFrame(moveTheThing);
}());
New Animation Loop
(function(){
    var element = document.getElementById("box");

   function moveTheThing(){

       element.style.left = (element.offsetLeft + 5) + "px";

       requestAnimationFrame(moveTheThing);
   }

    requestAnimationFrame(moveTheThing);
}());
New Animation Loop
(function(){
    var element = document.getElementById("box"),
        start = Date.now();

   function moveTheThing(time){
       var since = (time || Date.now()) – start;
       element.style.left = (element.offsetLeft + since)+ "px";

       requestAnimationFrame(moveTheThing);
   }

    requestAnimationFrame(moveTheThing);
}());
<button id="btn" style="font-size: 30px; padding: 0.5em
    1em">Click Me</button>

<script>
window.onload = function(){
   document.getElementById("btn").onclick = function(){
      requestAnimationFrame(function() {
          //do something
      });
   };
};
</script>
When Clicked
UI Thread



time
                           UI Queue
                              Update UI

                               onclick

                              Update UI
When Clicked
UI Thread
   Update UI


time
                                           UI Queue
               Draw down state                 onclick

                                              Update UI
When Clicked
UI Thread
   Update UI   onclick


time
                                        UI Queue
                                           Update UI
Call to requestAnimationFrame()
UI Thread
   Update UI    onclick


time
                                     UI Queue
                                        Update UI

                                         Changes

                                        Anim Frame
When Clicked
UI Thread
   Update UI   onclick     Update UI


time
                                        UI Queue
                                            Changes
                  Draw up state
                                           Anim Frame
Before Next Frame
UI Thread
   Update UI   onclick   Update UI   Changes


time
                                               UI Queue
                                                  Anim Frame
Naminate!
UI Thread
   Update UI   onclick   Update UI      Changes     Anim Frame


time
                                                   UI Queue
                           Draw whatever changes
                               are necessary
[requestAnimationFrame()’s framerate is] capped at 1000/(16 + N)
fps, where N is the number of ms it takes your callback to execute.
If your callback takes 1000ms to execute, then it's capped at under
1fps. If your callback takes 1ms to execute, you get about 60fps.

-Boris Zbarsky (Mozilla) via Paul Irish (Google)
Animate all the things!!!
 …with CSS and
 requestAnimationFrame
What about other things?
https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/setImmediate/Overview.html
Code to
                            execute
var iId = setImmediate(function(){

  // do something
                                     msSetImmediate()
});                                  msClearImmediate()


// optional
clearImmediate(iId)
<button id="btn" style="font-size: 30px; padding: 0.5em
    1em">Click Me</button>

<script>
window.onload = function(){
   document.getElementById("btn").onclick = function(){
      setImmediate(function() {
          //do something
      });
   };
};
</script>
When Clicked
UI Thread



time
                           UI Queue
                              Update UI

                               onclick

                              Update UI
When Clicked
UI Thread
   Update UI


time
                                           UI Queue
               Draw down state                 onclick

                                              Update UI
When Clicked
UI Thread
   Update UI   onclick


time
                                        UI Queue
                                           Update UI
Call to setImmediate()
UI Thread
   Update UI   onclick


time
                                                 UI Queue
                                                    Update UI

                                                     Changes
                          Always added after
                         the last UI update in
                              the queue
When Clicked
UI Thread
   Update UI   onclick     Update UI


time
                                        UI Queue
                                            Changes
                  Draw up state
Immediately!
UI Thread
   Update UI   onclick    Update UI   Changes


time
                                                UI Queue
https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/setImmediate/Overview.html
http://www.w3.org/TR/workers/
//in page
var worker = new Worker("process.js");
worker.onmessage = function(event){
     useData(event.data);
};
worker.postMessage(values);
//in process.js
self.onmessage = function(event){
     var items = event.data;
     for (var i=0,len=items.length; i < len; i++){
         process(items[i]);
     }
     self.postMessage(items);
};
When Clicked
UI Thread



time
                           UI Queue
                              Update UI

                               onclick

                              Update UI
When Clicked
UI Thread
   Update UI


time
                                           UI Queue
               Draw down state                 onclick

                                              Update UI
When Clicked
UI Thread
   Update UI   onclick


time
                                        UI Queue
                                           Update UI
Create Web Worker
UI Thread
    Update UI         onclick


time
                                             UI Queue
                                                Update UI


     Creates a
    background
thread/process/etc.
postMessage()
UI Thread
   Update UI   onclick       Update UI


time
                                         UI Queue

                         process
Worker Complete
UI Thread
   Update UI   onclick   Update UI


time
                                      UI Queue
                                         onmessage
Future
UI Thread
   Update UI   onclick   Update UI   onmessage


time
                                     UI Queue
Recommendations
• Use as few as necessary
 Timers     • If multiple are necessary, use a single timer that can
              accommodate all



Animation   • Use CSS transitions and animations first
            • If not possible, use requestAnimationFrame()




 Other      • Use web workers for efficient data processing
            • If no other options, use timers (see first point)
Etcetera
My company:     • wellfurnished.com
    My blog:    • nczonline.net
     Twitter    • @slicknet
These Slides:   • slideshare.net/nzakas

More Related Content

What's hot (20)

PPT
Major Java 8 features
Sanjoy Kumar Roy
 
PPTX
Window object
preetikapri1
 
PPSX
Function in c
savitamhaske
 
PPT
Object Oriented Programming Concepts using Java
Glenn Guden
 
PDF
ZIO-Direct - Functional Scala 2022
Alexander Ioffe
 
PPTX
Operators in java presentation
kunal kishore
 
ODP
Function
jayesh30sikchi
 
PPTX
Networking in Java
Tushar B Kute
 
PDF
Java Concurrency by Example
CodeOps Technologies LLP
 
PPT
C program
AJAL A J
 
PPTX
Buffer and scanner
Arif Ullah
 
PPTX
Tuple in python
vikram mahendra
 
PDF
The New JavaScript: ES6
Rob Eisenberg
 
PDF
MySQL INDEXES
HripsimeGhaltaghchya
 
PDF
Python strings
Mohammed Sikander
 
PPTX
Functions in C.pptx
Ashwini Raut
 
PPTX
Iterator - a powerful but underappreciated design pattern
Nitin Bhide
 
PDF
Python Programming - X. Exception Handling and Assertions
Ranel Padon
 
PDF
Introduction to Automation Testing and Selenium overiew
Disha Srivastava
 
PPTX
Selenium-Locators
Mithilesh Singh
 
Major Java 8 features
Sanjoy Kumar Roy
 
Window object
preetikapri1
 
Function in c
savitamhaske
 
Object Oriented Programming Concepts using Java
Glenn Guden
 
ZIO-Direct - Functional Scala 2022
Alexander Ioffe
 
Operators in java presentation
kunal kishore
 
Function
jayesh30sikchi
 
Networking in Java
Tushar B Kute
 
Java Concurrency by Example
CodeOps Technologies LLP
 
C program
AJAL A J
 
Buffer and scanner
Arif Ullah
 
Tuple in python
vikram mahendra
 
The New JavaScript: ES6
Rob Eisenberg
 
MySQL INDEXES
HripsimeGhaltaghchya
 
Python strings
Mohammed Sikander
 
Functions in C.pptx
Ashwini Raut
 
Iterator - a powerful but underappreciated design pattern
Nitin Bhide
 
Python Programming - X. Exception Handling and Assertions
Ranel Padon
 
Introduction to Automation Testing and Selenium overiew
Disha Srivastava
 
Selenium-Locators
Mithilesh Singh
 

Similar to JavaScript Timers, Power Consumption, and Performance (20)

PDF
High Performance JavaScript - WebDirections USA 2010
Nicholas Zakas
 
PDF
High Performance JavaScript - jQuery Conference SF Bay Area 2010
Nicholas Zakas
 
PDF
Nicholas' Performance Talk at Google
Nicholas Zakas
 
PDF
High Performance JavaScript - Fronteers 2010
Nicholas Zakas
 
PDF
High Performance JavaScript (Amazon DevCon 2011)
Nicholas Zakas
 
PPT
Responsive interfaces
Nicholas Zakas
 
PDF
倒计时优化点滴
j5726
 
PDF
High Performance JavaScript (YUIConf 2010)
Nicholas Zakas
 
PPTX
Developing high performance and responsive web apps using web worker
Suresh Patidar
 
PPTX
High Performance JavaScript (CapitolJS 2011)
Nicholas Zakas
 
PDF
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
PDF
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
PPTX
Javascript ch3
Brady Cheng
 
PDF
Performance.now() fast but not furious
Anna Migas
 
PPT
14709302.ppt
SunilChaluvaiah
 
PDF
Titanium - Making the most of your single thread
Ronald Treur
 
PPTX
Netflix Webkit-Based UI for TV Devices
Matt McCarthy
 
PDF
Fullstack 2018 - Fast but not furious: debugging user interaction performanc...
Anna Migas
 
PDF
Throttle and Debounce Patterns in Web Apps
Almir Filho
 
PDF
TrackPad Destroyer
PubNub
 
High Performance JavaScript - WebDirections USA 2010
Nicholas Zakas
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
Nicholas Zakas
 
Nicholas' Performance Talk at Google
Nicholas Zakas
 
High Performance JavaScript - Fronteers 2010
Nicholas Zakas
 
High Performance JavaScript (Amazon DevCon 2011)
Nicholas Zakas
 
Responsive interfaces
Nicholas Zakas
 
倒计时优化点滴
j5726
 
High Performance JavaScript (YUIConf 2010)
Nicholas Zakas
 
Developing high performance and responsive web apps using web worker
Suresh Patidar
 
High Performance JavaScript (CapitolJS 2011)
Nicholas Zakas
 
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
Javascript ch3
Brady Cheng
 
Performance.now() fast but not furious
Anna Migas
 
14709302.ppt
SunilChaluvaiah
 
Titanium - Making the most of your single thread
Ronald Treur
 
Netflix Webkit-Based UI for TV Devices
Matt McCarthy
 
Fullstack 2018 - Fast but not furious: debugging user interaction performanc...
Anna Migas
 
Throttle and Debounce Patterns in Web Apps
Almir Filho
 
TrackPad Destroyer
PubNub
 
Ad

More from Nicholas Zakas (20)

PPTX
Browser Wars Episode 1: The Phantom Menace
Nicholas Zakas
 
PPTX
Enough with the JavaScript already!
Nicholas Zakas
 
PPTX
The Pointerless Web
Nicholas Zakas
 
PPTX
JavaScript APIs you’ve never heard of (and some you have)
Nicholas Zakas
 
PPTX
Scalable JavaScript Application Architecture 2012
Nicholas Zakas
 
PPTX
Maintainable JavaScript 2012
Nicholas Zakas
 
PDF
Maintainable JavaScript 2011
Nicholas Zakas
 
PDF
High Performance JavaScript 2011
Nicholas Zakas
 
PDF
Mobile Web Speed Bumps
Nicholas Zakas
 
PDF
Progressive Enhancement 2.0 (Conference Agnostic)
Nicholas Zakas
 
PDF
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Nicholas Zakas
 
PDF
YUI Test The Next Generation (YUIConf 2010)
Nicholas Zakas
 
PDF
Performance on the Yahoo! Homepage
Nicholas Zakas
 
PDF
Scalable JavaScript Application Architecture
Nicholas Zakas
 
PDF
Extreme JavaScript Compression With YUI Compressor
Nicholas Zakas
 
PDF
Writing Efficient JavaScript
Nicholas Zakas
 
PDF
Speed Up Your JavaScript
Nicholas Zakas
 
PDF
Maintainable JavaScript
Nicholas Zakas
 
PDF
JavaScript Variable Performance
Nicholas Zakas
 
ODP
The New Yahoo! Homepage and YUI 3
Nicholas Zakas
 
Browser Wars Episode 1: The Phantom Menace
Nicholas Zakas
 
Enough with the JavaScript already!
Nicholas Zakas
 
The Pointerless Web
Nicholas Zakas
 
JavaScript APIs you’ve never heard of (and some you have)
Nicholas Zakas
 
Scalable JavaScript Application Architecture 2012
Nicholas Zakas
 
Maintainable JavaScript 2012
Nicholas Zakas
 
Maintainable JavaScript 2011
Nicholas Zakas
 
High Performance JavaScript 2011
Nicholas Zakas
 
Mobile Web Speed Bumps
Nicholas Zakas
 
Progressive Enhancement 2.0 (Conference Agnostic)
Nicholas Zakas
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Nicholas Zakas
 
YUI Test The Next Generation (YUIConf 2010)
Nicholas Zakas
 
Performance on the Yahoo! Homepage
Nicholas Zakas
 
Scalable JavaScript Application Architecture
Nicholas Zakas
 
Extreme JavaScript Compression With YUI Compressor
Nicholas Zakas
 
Writing Efficient JavaScript
Nicholas Zakas
 
Speed Up Your JavaScript
Nicholas Zakas
 
Maintainable JavaScript
Nicholas Zakas
 
JavaScript Variable Performance
Nicholas Zakas
 
The New Yahoo! Homepage and YUI 3
Nicholas Zakas
 
Ad

Recently uploaded (20)

PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
July Patch Tuesday
Ivanti
 
PPTX
Designing Production-Ready AI Agents
Kunal Rai
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
July Patch Tuesday
Ivanti
 
Designing Production-Ready AI Agents
Kunal Rai
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 

JavaScript Timers, Power Consumption, and Performance

Editor's Notes

  • #33: Go to several examples
  • #61: C0Operational state. CPU fully turned on.C1First idle state. Stops CPU main internal clocks via software. Bus interface unit and APIC are kept running at full speed.C2Stops CPU main internal clocks via hardware. State where the processor maintains all software-visible states, but may take longer to wake up through interrupts.C3Stops all CPU internal clocks. The processor does not need to keep its cache coherent, but maintains other states. Some processors have variations of the C3 state that differ in how long it takes to wake the processor through interrupts.