Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
User Perceived Performance
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Mike North
August 25, 2015
Technology
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
User Perceived Performance
Mike North
August 25, 2015
More Decks by Mike North
See All by Mike North
Enemy of the state
truenorth
0
62
Phoenix for Rubyists
truenorth
0
81
Scalable, Ambitious, Future-friendly web apps with Ember.js
truenorth
0
140
Ember addons, served three ways
truenorth
0
78
Write Once, Run Everywhere - Mobile+Web Devcon 2015
truenorth
0
360
Compose All the Things (Wicked Good Ember 2015)
truenorth
0
120
Async/Await in JavaScript, today!
truenorth
1
210
Test like a pro with Ember.js
truenorth
0
60
Tomorrow's components, today!
truenorth
0
60
Other Decks in Technology
See All in Technology
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
150
安心して変更できるWebフロントエンドの作り方
pirosikick
4
2.6k
人間はどの意思決定を手放せるのか
kawasima
14
7k
AI に書かせたその API、 “信頼” できますか?
nagix
0
110
What the customer really needed
kawaguti
PRO
2
190
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
170
Reactの設計論
uhyo
24
13k
品質と信頼性を地続きにする
grimoh
0
430
20260912_スクフェス三河
kgnkhkr
0
380
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
150
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Automating Front-end Workflow
addyosmani
1369
210k
Between Models and Reality
mayunak
4
460
Thoughts on Productivity
jonyablonski
76
5.4k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
Code Reviewing Like a Champion
maltzj
528
40k
Being A Developer After 40
akosma
91
590k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
320
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Done Done
chrislema
186
16k
Transcript
User Perceived Performance Mike North Ember.js SF Meetup - 8/25/2015
@MichaelLNorth github.com/mike-north
@MichaelLNorth Hi
Ember @ Yahoo • LOTS of Ember Apps • ~70
Ember-focused developers • A “flagship” app that ’s huge (70K lines JS) • An internal add on ecosystem
//TODO • What is user-perceived performance? • Instrumenting & Measuring
• Lessons learned from large ember apps @ Yahoo • UX tricks for perception of responsiveness
What is User Perceived Performance?
User Perception < 100ms Feels “instantaneous” < 1,000ms Keep flow
of thought < 10,000ms Keep attention
SPA Performance • Server deals only w/ JSON • Incremental
changes instead of boiling the ocean • Control over UX of loading/ transitions • Initial page load is longer • Slowness appears to be in the UI • API loses context ADVANTAGES CHALLENGES
Perf Matters ↑ 1.0s Page Load ↓ $1.6B /Year ↑0.4s
Search Load ↓ 8,000,000 Searches/Day
How do we measure it?
System-Wide Instrumentation
@MichaelLNorth API DB Caching / Indexing Asset Serving Networking /
Infrastructure Where do we start? Client
System-Wide Instrumentation API DB DB Network UI
System-Wide Instrumentation API DB DB Business logic API DB DB
Network UI
System-Wide Instrumentation R Transition Render R Render R Route A
RouteB
UI System-Wide Instrumentation R Transition Render R Render R Route
A RouteB ember-perf API DB { meta: {} } DB
System-Wide Instrumentation ember-perf R Transition Render R Render R Route
A RouteB API DB API DB DB
Other tools • Browser profiler, timeline and network tab •
Ember inspector • Take rendering speed numbers with a grain of salt
#Protips
Project Setup • Enable gzip compression • Load images @
the size you need, and compress them • Keep up to date on the framework releases
Ember Performance • Have an awareness of the cost of
data • Load what you need • ?per_page=200 • Pretender is your friend • It’s ok to keep loading stragglers Pretender
Ember Performance • Scrutinize observers • Avoid {{{ known slow
things }}} • Find and squash re-renders • this.set() in didInsertElement
Ember Performance /companies/1 CompaniesShow /api/companies/1 /api/companies/1/employees CompaniesShowEmployees 180ms 220ms 400ms
Ember Performance /companies/1 CompaniesShow /api/companies/1 /api/companies/1/employees CompaniesShowEmployees 180ms 220ms 220ms
For the waits you can’t conquer…
UX Tricks
UX Tricks • Background tasks
UX Tricks • Make waiting more interesting Loading… Thanks for
waiting, we’re almost done! Just a few more moments… Yay! Your thing is ready! GET THING
UX Tricks • Get something on the screen immediately •
Use “dummy content” • Smooth and honest progress bars ember-load
Addons ember-load ember-perf