SlideShare a Scribd company logo
Extreme Mobile App Performance:

                         Native to Web
                                  Jacky Nguyen
                            Chief Mobile Architect - Sencha Inc.




          jacky@sencha.com                                         @nktpro

Wednesday, April 3, 13
vs.




Wednesday, April 3, 13
“Our biggest mistake was
         betting too much on HTML5”
                         Mark Zuckerberg - TechCrunch Disrupt 2012




Wednesday, April 3, 13
Fear


                                Doubt



                                        Bashing


Wednesday, April 3, 13
Talk               Talk          Talk

                            Talk
             Talk                         Talk

                         Talk
                                   Talk

            Talk
                           Talk

            Talk




Wednesday, April 3, 13
Talk               Talk          Talk

                            Talk
             Talk                         Talk

                         Talk
                                   Talk

            Talk
                           Talk
                                                        DO!
            Talk




Wednesday, April 3, 13
The challenging parts




Wednesday, April 3, 13
The challenging parts
           Constraints
        •Lots of data
        •Variety of content
        •Unknown item sizes




Wednesday, April 3, 13
The challenging parts
           Constraints
        •Lots of data
        •Variety of content
        •Unknown item sizes

                                        Requirements
                                        •60fps scrolling
                                        •Fast data loading
                                        •Fast rendering
Wednesday, April 3, 13
Under the hood




Wednesday, April 3, 13
Under the hood


                                  UIWebView




                                  UIWebView


Wednesday, April 3, 13
The problems




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

Wednesday, April 3, 13
1


                         2


                         3




Wednesday, April 3, 13
1


                         2


                         3



                         4




Wednesday, April 3, 13
2


                         3



                         4



                         5




Wednesday, April 3, 13
2


                                 3



                                 4



                                 5




                         Web page approach
Wednesday, April 3, 13
Page vs app model
                                   Web page        Web app

                Payload          Huge, raw HTML   Minimal data

                State               Stateless       Stateful

                Memory              Increasing     Constant

                Performance        Degrading       Constant

                Prioritization         No             Yes



Wednesday, April 3, 13
Shut up and code!




Wednesday, April 3, 13
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
Shut up and code!




Wednesday, April 3, 13
Shut up and code!




Wednesday, April 3, 13
Infinite List techniques




Wednesday, April 3, 13
Infinite List techniques

                   •Recycling
                   •Prioritizing
                   •Sandboxing


Wednesday, April 3, 13
DOM recycling




Wednesday, April 3, 13
Infinite list - unknown item sizes

                         1


                         2


                         3


                         4

Wednesday, April 3, 13
Infinite list - unknown item sizes
                       1


                         2


                         3


                         4




Wednesday, April 3, 13
Infinite list - unknown item sizes

                         2


                         3


                         4



                         1


Wednesday, April 3, 13
Infinite list - unknown item sizes

                         2


                         3


                         4



                         5


Wednesday, April 3, 13
Infinite list - unknown item sizes

                         2


                         3


                         4



                         5         x

Wednesday, April 3, 13
Animation 101



                         A                   B




Wednesday, April 3, 13
CSS Positioning




Wednesday, April 3, 13
CSS Positioning




Wednesday, April 3, 13
Scroll Positioning




Wednesday, April 3, 13
Scroll Positioning




Wednesday, April 3, 13
Compositing




Wednesday, April 3, 13
Compositing




Wednesday, April 3, 13
Compositing for Infinite List




Wednesday, April 3, 13
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
Compositing




Wednesday, April 3, 13
Compositing




Wednesday, April 3, 13
Compositing


                              1


                              2


                              3


                              4

Wednesday, April 3, 13
1


                         2


                         3


                         4




Wednesday, April 3, 13
2


                         3


                         4



                         1
                         5


Wednesday, April 3, 13
Batch DOM read / write separately


                         1

                         2
                         3

                         4

                         5


Wednesday, April 3, 13
1

                         2
                         3

                         4
                             translate inner   composite

                         5




Wednesday, April 3, 13
1

                         3                     2

                         4
                             translate inner       composite

                         5




Wednesday, April 3, 13
6

                                               7
                         3

                         4
                             translate inner       composite

                         5   render 6, 7           write




Wednesday, April 3, 13
6

                                               7
                         3

                         4
                             translate inner       composite

                         5   render 6, 7           write
                             read 6, 7 heights     read - layout




Wednesday, April 3, 13
3

                         4
                             translate inner     composite

                         5   render 6, 7         write
                             read 6, 7 heights   read - layout
                         6
                             translate 6, 7      composite
                         7


Wednesday, April 3, 13
Wednesday, April 3, 13
Prioritizing




Wednesday, April 3, 13
16.7ms

Wednesday, April 3, 13
Style recalculation
                           Layout
                           Compositing

                  16.7ms   Painting
                           Network requests
                           Image decoding
                           Data processing



Wednesday, April 3, 13
Style recalculation
                         Layout
                         Compositing

               100ms     Painting
                         Network requests
                         Image decoding
                         Data processing



Wednesday, April 3, 13
16ms
                         12ms
                         13ms   Style recalculation
                         60ms
                         15ms   Layout
                         13ms   Compositing
                         16ms
                         40ms   Painting
                         16ms   Network requests
                         17ms
                         15ms   Image decoding
                         55ms   Data processing
                         14ms
                         17ms
                         35ms
Wednesday, April 3, 13
The AnimationQueue


                            60fps




Wednesday, April 3, 13
The AnimationQueue
             Animation
                                          Touch events
                             60fps




         Image loading
                                              Data loading



           Image rendering

Wednesday, April 3, 13
Buffered rendering
                     Progressive             Buffered




Wednesday, April 3, 13
Buffered rendering
                     Progressive             Buffered




Wednesday, April 3, 13
Delayed image rendering




Wednesday, April 3, 13
Combined techniques




Wednesday, April 3, 13
Demo




Wednesday, April 3, 13
Scalability problem




                         60fps


Wednesday, April 3, 13
Scalability problem




                         60fps


Wednesday, April 3, 13
Scalability problem




                         50fps          50fps


Wednesday, April 3, 13
Scalability problem




                         40fps          40fps          40fps


Wednesday, April 3, 13
Scalability problem




                           8ms layout cost
Wednesday, April 3, 13
Scalability problem




                          40ms layout cost
Wednesday, April 3, 13
By making it fast, I make it slow...

Wednesday, April 3, 13
Sandboxing




Wednesday, April 3, 13
Sandboxing




Wednesday, April 3, 13
Sandboxing




Wednesday, April 3, 13
Sandboxing




Wednesday, April 3, 13
document




                   IFRAME        IFRAME     IFRAME

                         60fps    60fps      60fps
Wednesday, April 3, 13
Demo




Wednesday, April 3, 13
Extreme benefits, frameworks required

        •Bridge all events, remap coordinates
        •Copy stylesheets dynamically
        •Connect layouts
        •Workaround browser bugs




Wednesday, April 3, 13
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
Stop reinventing the wheel




           https://www.sencha.com/store/sencha-touch-bundle
Wednesday, April 3, 13
Sum it up




Wednesday, April 3, 13
Wednesday, April 3, 13

More Related Content

PPTX
How to Build a Dynamic Social Media Plan
PDF
Learn BEM: CSS Naming Convention
PDF
SEO: Getting Personal
PDF
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
PDF
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
PDF
THE MISSING MANUAL FOR DATA SCIENCE: REMIX. RESUSE. REPRODUCE from Structure:...
PDF
NodeJS: Writing tests -- A Beginners' Guide
PDF
Ignite amsterdam from 0 to C
How to Build a Dynamic Social Media Plan
Learn BEM: CSS Naming Convention
SEO: Getting Personal
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
THE MISSING MANUAL FOR DATA SCIENCE: REMIX. RESUSE. REPRODUCE from Structure:...
NodeJS: Writing tests -- A Beginners' Guide
Ignite amsterdam from 0 to C

Similar to Extreme Mobile App Performance: Native to Web (20)

PDF
Structuring apps in Scala
PDF
WordPress: Not for Beginners
PDF
Writing testable code
PDF
Email by the Numbers
PDF
Serious games at the UNHCR with ARLearn, a toolkit for mobile and virtual rea...
PDF
HCD workshop
PDF
#Emesaconnect presentatie Vakantieveiling .nl
PDF
The End of the One-Off: How to build reskinnable content packages
PDF
Redesigning UBC Library
PDF
Been there done that
PDF
HTML5 and jQuery for Flex Developers
PDF
Technology as culture_20130212
PDF
Training Adults
PDF
The page is dead - SXSWi 2012
PDF
CSS3 and jQuery for Designers
PDF
Twitter: small form big strategy, big content
PDF
Linking: Making Data Open and Useful
PDF
Linking: Making Data Open and Useful
PDF
Matt Bailey
Structuring apps in Scala
WordPress: Not for Beginners
Writing testable code
Email by the Numbers
Serious games at the UNHCR with ARLearn, a toolkit for mobile and virtual rea...
HCD workshop
#Emesaconnect presentatie Vakantieveiling .nl
The End of the One-Off: How to build reskinnable content packages
Redesigning UBC Library
Been there done that
HTML5 and jQuery for Flex Developers
Technology as culture_20130212
Training Adults
The page is dead - SXSWi 2012
CSS3 and jQuery for Designers
Twitter: small form big strategy, big content
Linking: Making Data Open and Useful
Linking: Making Data Open and Useful
Matt Bailey
Ad

Recently uploaded (20)

PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPTX
TLE Review Electricity (Electricity).pptx
PDF
WOOl fibre morphology and structure.pdf for textiles
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
STKI Israel Market Study 2025 version august
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PPTX
The various Industrial Revolutions .pptx
PDF
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
project resource management chapter-09.pdf
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
TLE Review Electricity (Electricity).pptx
WOOl fibre morphology and structure.pdf for textiles
OMC Textile Division Presentation 2021.pptx
Getting started with AI Agents and Multi-Agent Systems
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
STKI Israel Market Study 2025 version august
Group 1 Presentation -Planning and Decision Making .pptx
Programs and apps: productivity, graphics, security and other tools
NewMind AI Weekly Chronicles – August ’25 Week III
The various Industrial Revolutions .pptx
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
1 - Historical Antecedents, Social Consideration.pdf
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
project resource management chapter-09.pdf
DP Operators-handbook-extract for the Mautical Institute
Enhancing emotion recognition model for a student engagement use case through...
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
NewMind AI Weekly Chronicles - August'25-Week II
Ad

Extreme Mobile App Performance: Native to Web