extreme mobile app performance: native to web

80
Jacky Nguyen Chief Mobile Architect - Sencha Inc. @nktpro [email protected] Extreme Mobile App Performance: Native to Web Wednesday, April 3, 13

Upload: jackysencha

Post on 17-May-2015

184 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Extreme Mobile App Performance: Native to Web

Jacky Nguyen Chief Mobile Architect - Sencha Inc.

@[email protected]

Extreme Mobile App Performance:

Native to Web

Wednesday, April 3, 13

Page 2: Extreme Mobile App Performance: Native to Web

vs.

Wednesday, April 3, 13

Page 3: Extreme Mobile App Performance: Native to Web

“Our biggest mistake was betting too much on HTML5”

Mark Zuckerberg - TechCrunch Disrupt 2012

Wednesday, April 3, 13

Page 4: Extreme Mobile App Performance: Native to Web

Fear

Doubt

Bashing

Wednesday, April 3, 13

Page 5: Extreme Mobile App Performance: Native to Web

Talk

Talk

TalkTalk

Talk

Talk

Talk

Talk

TalkTalk

Talk

Wednesday, April 3, 13

Page 6: Extreme Mobile App Performance: Native to Web

Talk

Talk

TalkTalk

Talk

Talk

Talk

Talk

TalkTalk

TalkDO!

Wednesday, April 3, 13

Page 7: Extreme Mobile App Performance: Native to Web

The challenging parts

Wednesday, April 3, 13

Page 8: Extreme Mobile App Performance: Native to Web

The challenging parts

•Lots of data

•Variety of content

•Unknown item sizes

Constraints

Wednesday, April 3, 13

Page 9: Extreme Mobile App Performance: Native to Web

The challenging parts

•Lots of data

•Variety of content

•Unknown item sizes

Constraints

•60fps scrolling

•Fast data loading

•Fast rendering

Requirements

Wednesday, April 3, 13

Page 10: Extreme Mobile App Performance: Native to Web

Under the hood

Wednesday, April 3, 13

Page 11: Extreme Mobile App Performance: Native to Web

UIWebView

UIWebView

Under the hood

Wednesday, April 3, 13

Page 12: Extreme Mobile App Performance: Native to Web

The problems

“So while utilizing web technology [...], people expect a fast, reliable experience and our iOS app was falling short.”

Wednesday, April 3, 13

Page 13: Extreme Mobile App Performance: Native to Web

1

2

3

Wednesday, April 3, 13

Page 14: Extreme Mobile App Performance: Native to Web

1

2

3

4

Wednesday, April 3, 13

Page 15: Extreme Mobile App Performance: Native to Web

2

3

4

5

Wednesday, April 3, 13

Page 16: Extreme Mobile App Performance: Native to Web

Web page approach

2

3

4

5

Wednesday, April 3, 13

Page 17: Extreme Mobile App Performance: Native to Web

Page vs app model

Web page Web app

Payload

State

Memory

Performance

Prioritization

Huge, raw HTML Minimal data

Stateless Stateful

Increasing Constant

Degrading Constant

No Yes

Wednesday, April 3, 13

Page 18: Extreme Mobile App Performance: Native to Web

Shut up and code!

Wednesday, April 3, 13

Page 19: Extreme Mobile App Performance: Native to Web

Shut up and code!

•Pure web (HTML + CSS + JavaScript)

•Cross-platform

•Using Facebook’s own APIs

•Build on top of Sencha Touch 2

•1 engineer, 1 manager, 3 weeks

Wednesday, April 3, 13

Page 20: Extreme Mobile App Performance: Native to Web

Shut up and code!

Wednesday, April 3, 13

Page 21: Extreme Mobile App Performance: Native to Web

Shut up and code!

Wednesday, April 3, 13

Page 22: Extreme Mobile App Performance: Native to Web

Infinite List techniques

Wednesday, April 3, 13

Page 23: Extreme Mobile App Performance: Native to Web

Infinite List techniques

•Recycling

•Prioritizing

•Sandboxing

Wednesday, April 3, 13

Page 24: Extreme Mobile App Performance: Native to Web

DOM recycling

Wednesday, April 3, 13

Page 25: Extreme Mobile App Performance: Native to Web

Infinite list - unknown item sizes

1

2

3

4

Wednesday, April 3, 13

Page 26: Extreme Mobile App Performance: Native to Web

Infinite list - unknown item sizes1

2

3

4

Wednesday, April 3, 13

Page 27: Extreme Mobile App Performance: Native to Web

Infinite list - unknown item sizes

1

2

3

4

Wednesday, April 3, 13

Page 28: Extreme Mobile App Performance: Native to Web

Infinite list - unknown item sizes

2

3

4

5

Wednesday, April 3, 13

Page 29: Extreme Mobile App Performance: Native to Web

Infinite list - unknown item sizes

2

3

4

5 x

Wednesday, April 3, 13

Page 30: Extreme Mobile App Performance: Native to Web

Animation 101

A B

Wednesday, April 3, 13

Page 31: Extreme Mobile App Performance: Native to Web

CSS Positioning

Wednesday, April 3, 13

Page 32: Extreme Mobile App Performance: Native to Web

CSS Positioning

Wednesday, April 3, 13

Page 33: Extreme Mobile App Performance: Native to Web

Scroll Positioning

Wednesday, April 3, 13

Page 34: Extreme Mobile App Performance: Native to Web

Scroll Positioning

Wednesday, April 3, 13

Page 35: Extreme Mobile App Performance: Native to Web

Compositing

Wednesday, April 3, 13

Page 36: Extreme Mobile App Performance: Native to Web

Compositing

Wednesday, April 3, 13

Page 37: Extreme Mobile App Performance: Native to Web

Compositing for Infinite List

Wednesday, April 3, 13

Page 38: Extreme Mobile App Performance: Native to Web

Compositing for Infinite List

•Composite each item and the container independently

•Translate the container for every frame

•Translate each item once per re-rendering cycle

Wednesday, April 3, 13

Page 39: Extreme Mobile App Performance: Native to Web

Compositing

Wednesday, April 3, 13

Page 40: Extreme Mobile App Performance: Native to Web

Compositing

Wednesday, April 3, 13

Page 41: Extreme Mobile App Performance: Native to Web

1

2

3

4

Compositing

Wednesday, April 3, 13

Page 42: Extreme Mobile App Performance: Native to Web

1

2

3

4

Wednesday, April 3, 13

Page 43: Extreme Mobile App Performance: Native to Web

1

2

3

4

5

Wednesday, April 3, 13

Page 44: Extreme Mobile App Performance: Native to Web

Batch DOM read / write separately

1

2

3

4

5

Wednesday, April 3, 13

Page 45: Extreme Mobile App Performance: Native to Web

1

2

3

4

5

translate inner composite

Wednesday, April 3, 13

Page 46: Extreme Mobile App Performance: Native to Web

1

23

4

5

translate inner composite

Wednesday, April 3, 13

Page 47: Extreme Mobile App Performance: Native to Web

3

4

5

6

7

translate inner composite

render 6, 7 write

Wednesday, April 3, 13

Page 48: Extreme Mobile App Performance: Native to Web

3

4

5

6

7

translate inner composite

render 6, 7 write

read 6, 7 heights read - layout

Wednesday, April 3, 13

Page 49: Extreme Mobile App Performance: Native to Web

3

4

5

6

7

translate inner composite

render 6, 7 write

read 6, 7 heights read - layout

translate 6, 7 composite

Wednesday, April 3, 13

Page 50: Extreme Mobile App Performance: Native to Web

Wednesday, April 3, 13

Page 51: Extreme Mobile App Performance: Native to Web

Prioritizing

Wednesday, April 3, 13

Page 52: Extreme Mobile App Performance: Native to Web

16.7ms

Wednesday, April 3, 13

Page 53: Extreme Mobile App Performance: Native to Web

16.7ms

Style recalculationLayoutCompositingPaintingNetwork requestsImage decodingData processing

Wednesday, April 3, 13

Page 54: Extreme Mobile App Performance: Native to Web

Style recalculationLayoutCompositingPaintingNetwork requestsImage decodingData processing

100ms

Wednesday, April 3, 13

Page 55: Extreme Mobile App Performance: Native to Web

Style recalculationLayoutCompositingPaintingNetwork requestsImage decodingData processing

16ms12ms13ms60ms15ms13ms16ms40ms16ms17ms15ms55ms14ms17ms35ms

Wednesday, April 3, 13

Page 56: Extreme Mobile App Performance: Native to Web

The AnimationQueue

60fps

Wednesday, April 3, 13

Page 57: Extreme Mobile App Performance: Native to Web

The AnimationQueue

60fps

Touch eventsAnimation

Image loading

Image rendering

Data loading

Wednesday, April 3, 13

Page 58: Extreme Mobile App Performance: Native to Web

Buffered renderingProgressive Buffered

Wednesday, April 3, 13

Page 59: Extreme Mobile App Performance: Native to Web

Buffered renderingProgressive Buffered

Wednesday, April 3, 13

Page 60: Extreme Mobile App Performance: Native to Web

Delayed image rendering

Wednesday, April 3, 13

Page 61: Extreme Mobile App Performance: Native to Web

Combined techniques

Wednesday, April 3, 13

Page 62: Extreme Mobile App Performance: Native to Web

Demo

Wednesday, April 3, 13

Page 63: Extreme Mobile App Performance: Native to Web

60fps

Scalability problem

Wednesday, April 3, 13

Page 64: Extreme Mobile App Performance: Native to Web

60fps

Scalability problem

Wednesday, April 3, 13

Page 65: Extreme Mobile App Performance: Native to Web

50fps50fps

Scalability problem

Wednesday, April 3, 13

Page 66: Extreme Mobile App Performance: Native to Web

40fps40fps40fps

Scalability problem

Wednesday, April 3, 13

Page 67: Extreme Mobile App Performance: Native to Web

Scalability problem

8ms layout cost

Wednesday, April 3, 13

Page 68: Extreme Mobile App Performance: Native to Web

Scalability problem

40ms layout costWednesday, April 3, 13

Page 69: Extreme Mobile App Performance: Native to Web

By making it fast, I make it slow...

Wednesday, April 3, 13

Page 70: Extreme Mobile App Performance: Native to Web

Sandboxing

Wednesday, April 3, 13

Page 71: Extreme Mobile App Performance: Native to Web

Sandboxing

Wednesday, April 3, 13

Page 72: Extreme Mobile App Performance: Native to Web

Sandboxing

Wednesday, April 3, 13

Page 73: Extreme Mobile App Performance: Native to Web

Sandboxing

Wednesday, April 3, 13

Page 74: Extreme Mobile App Performance: Native to Web

IFRAME IFRAME IFRAME

60fps 60fps 60fps

document

Wednesday, April 3, 13

Page 75: Extreme Mobile App Performance: Native to Web

Demo

Wednesday, April 3, 13

Page 76: Extreme Mobile App Performance: Native to Web

Extreme benefits, frameworks required

•Bridge all events, remap coordinates

•Copy stylesheets dynamically

•Connect layouts

•Workaround browser bugs

Wednesday, April 3, 13

Page 77: Extreme Mobile App Performance: Native to Web

Extreme benefits, frameworks required

•Bridge all events, remap coordinates

•Copy stylesheets dynamically

•Connect layouts

•Workaround browser bugs

That’s what frameworks are for!

Wednesday, April 3, 13

Page 78: Extreme Mobile App Performance: Native to Web

Stop reinventing the wheel

https://www.sencha.com/store/sencha-touch-bundleWednesday, April 3, 13

Page 79: Extreme Mobile App Performance: Native to Web

Sum it up

Wednesday, April 3, 13

Page 80: Extreme Mobile App Performance: Native to Web

Wednesday, April 3, 13