Google IO 2013: Web Performance Matters

19
Google IO 2013 Web Performance Matters Unispace 3D Mitch 1

description

 

Transcript of Google IO 2013: Web Performance Matters

Page 1: Google IO 2013: Web Performance Matters

Google IO 2013

Web Performance Matters

Unispace 3D

Mitch

1

Page 2: Google IO 2013: Web Performance Matters

Google IO 2013 Sessions

Jank Free: Chrome Rendering Performance

True Grit: Debugging CSS & Render Performance

Web Page Design with the GPU in mind

Automating Performance Best Practices with PageSpeed

2

Page 3: Google IO 2013: Web Performance Matters

1. Focus on the user and all else will follow

2. It’s best to do one thing really, really well

3.Fast is better than slow4. Democracy on the web works

5. You don’t need to be at your desk to need an answer

6. You can make money without doing evil

7. There’s always more information out there

8. The need for information crosses all borders

9. You can be serious without a suit

10.great just isn’t good enough

Google’s Ten Things

3

Page 4: Google IO 2013: Web Performance Matters

Freeing up the UI thread with blisteringly-fast JS is key.......but it’s not enough!

4

Page 5: Google IO 2013: Web Performance Matters

We need Fast Rendering!

5

Page 6: Google IO 2013: Web Performance Matters

Rendering Performance

Style recalculation

Layout (aka Reflow)

Paint

Composite

6

Page 7: Google IO 2013: Web Performance Matters

The Rendering Cycle

Build the DOM

Calculate CSS property values

Build the rendering tree

Calculate layout

Paint

Composite

7

Page 8: Google IO 2013: Web Performance Matters

The Rendering Cycle

Build the DOM

Calculate CSS property values

Build the rendering tree

Calculate layout

Paint

Composite

} Style Recalculation

} Layout

Painting

Compositing Layers

8

Page 9: Google IO 2013: Web Performance Matters

Rendering 101

Paint fast

Avoid accidental paints

Don’t paint at ALL

Eliminate layout

Minimize paint rectangles

Eliminate painting altogether

9

Page 10: Google IO 2013: Web Performance Matters

Visually complex CSS

Image decodes/resizes

Redundant large empty layers

How to

position: fixed

overflow: scroll

hover effects

touch listeners

Unnecessary paints from:

Demo (hover effects)

Long paints from:

Demo (drag and drop)

10

Page 11: Google IO 2013: Web Performance Matters

How to

var newWidth = myDiv.offsetWidth+10; //Read

myDiv.style.width = newWidth+’px’; //Write

var newHeight = myDiv.offsetHeight+10; //Read

myDiv.style.height = newHeight+’px’; //Write

Unnecessary repaint & reflow:

11

Page 12: Google IO 2013: Web Performance Matters

How to

var newWidth = myDiv.offsetWidth+10; //Read

var newHeight = myDiv.offsetHeight+10; //Read

myDiv.style.width = newWidth+’px’; //Write

myDiv.style.height = newHeight+’px’; //Write

Better repaint & reflow:

12

Page 13: Google IO 2013: Web Performance Matters

How to

var div = document.getElementById(“box”);

lis = document.getElementByTagName(“li”);

i, len;

for(i=0; len=lis.length; i<len; i++) {

lis[i].style.width = div.offsetWidth+’px’;

}

Unnecessary repaint & reflow:

13

Page 14: Google IO 2013: Web Performance Matters

How to

var div = document.getElementById(“box”);

lis = document.getElementByTagName(“li”);

widthToSet = div.offsetWidth,

i, len;

for(i=0; len=lis.length; i<len; i++) {

lis[i].style.width = widthToSet+’px’;

}

Better repaint & reflow: Demo

14

Page 15: Google IO 2013: Web Performance Matters

Layers: Great for AnimationWant to animate with “no layout” and “no painting”

15

Page 16: Google IO 2013: Web Performance Matters

Layers

Painted independently, composited on the GPU

Can stretch, move, and fade without repainting

GPU + Layers = Faster Rendering

Too many layers = seriously bad time

Demo2Demo1

16

Page 17: Google IO 2013: Web Performance Matters

Hands-Free layer promotion

3D Transform

Canvas

Video

Plugins (i.e. Flash)

17

Page 18: Google IO 2013: Web Performance Matters

Use Dev Tools

Timeline

Show paint rectangles

Show composited layer borders

chrome://tracing

Continuous painting mode

PageSpeed (Chrome Extension)

18