Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Optimizing & Profiling UI Performance
Search
Brenda Cook
July 29, 2016
Programming
6
13k
Optimizing & Profiling UI Performance
Presented at 360|AnDev 2016
Brenda Cook
July 29, 2016
Tweet
Share
More Decks by Brenda Cook
See All by Brenda Cook
Fragments: Why? How? and What For?
kenodoggy
3
3.3k
Other Decks in Programming
See All in Programming
API Platform for Laravel
dunglas
1
1.2k
Composing an API the *right* way (Droidcon New York 2024)
zsmb
2
540
M5Stack に色々な M5ユニットをつないで扱う為の新たなアプローチ
gob
0
200
GraphQLとGigaViewer for Apps
numeroanddev
4
880
Beyond the RuboCop Defaults
koic
2
480
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
3
390
Go製CLIツールGatling Commanderによる負荷試験実施の自動化
okmtz
3
630
Removing Corepack
yosuke_furukawa
PRO
9
1.1k
AWS認定資格を受験するにあたり、気づいたこと・実践していたことのまとめ
satoshi256kbyte
1
120
Unlocking Python's Core Magic
leew
0
100
Cancel Next.js Page Navigation: Full Throttle
ypresto
1
110
Pythonで改めて考える「クラス(class)」の使いどころ
os1ma
13
3.4k
Featured
See All Featured
What's new in Ruby 2.0
geeforr
341
31k
What the flash - Photography Introduction
edds
67
11k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
125
18k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
279
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
231
130k
The Invisible Customer
myddelton
119
13k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Gamification - CAS2011
davidbonilla
80
5k
Designing Experiences People Love
moore
138
23k
Become a Pro
speakerdeck
PRO
24
4.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
45
4.9k
4 Signs Your Business is Dying
shpigford
180
21k
Transcript
Optimizing & Profiling UI Performance
What does it mean to have performant UI?
Jank
Frame Rate (FPS)
Refresh Rate (Hz)
1 second (1000ms) / 60 frames = 16.67ms per frame
FPS is capped by device display (refresh rate Hz) due to VSync
VSync
3 Double Buffering 0 1 2 1 2 CPU GPU
Display 1 1 Front Buffer CPU GPU Back Buffer 2 3 3 VSync VSync VSync VSync Frame Drop
4 3 Triple Buffering 0 1 2 3 1 2
CPU GPU Display 1 1 Front Buffer CPU GPU Back Buffer CPU GPU 3rd Buffer 2 3 4 VSync VSync VSync VSync Frame Drop
No VSync
Optimize
Flatten View Hierarchy
Deeply Nested View Hierarchy
Deeply Nested View Hierarchy
Shallow View Hierarchy
Deeply Nested Design View Optimized
Hierarchy Viewer
3 2 1
[show deeply nested hierarchy]
[show shallow hierarchy]
[show image of obtaining measure, layout and draw time]
None
None
Know your Views
GPU Overdraw
None
None
None
clipRect & quickReject
Performance Profiling
Profile GPU Rendering
None
Marshmallow
None
Android Studio Monitors
None
android { buildTypes { debug { debuggable true }
release { ... } } }
None
None
Systrace
$ cd android-sdk/platform-tools/systrace $ python systrace.py --time=10 -o mytrace.html sched
gfx view wm
None
None
None
None
None
None
None
None
Image Libraries to the Rescue! Picasso
Thank you Twitter @kenodoggy g+ +BrendaCook_kenodoggy