SlideShare une entreprise Scribd logo
1  sur  47
BOOM Performance
About me …
Co-founded & R&D Manager @
Co-founder & CTO @
eranz@dapulse.com
So… what is
BOOM Performance?
Fast
Super Fast
Super Duper Fast
BOOM
Boom Speed is the time it takes to say “Boom”
0-100ms
100-300ms
300-1000ms
1000ms
10,000ms
Let’s put it in numbers:
INSTANT (BOOM)
Small perceptible delay
Machine is working
Likely mental context switch
Doesn’t work?
Why is
Boom Important?
Speed affects your product and the
happiness of your users.
And trust me -
You don’t know when they suffer.
Boom Speed = More Usage
Fast:Super Fast:Boom:
Boom Speed = Simpler UI
When your UI is slow users will ask you for features
that will make your UI more condensed.
- This will make your product worse.
“Can you add the edit button on the main
project list page? It will be faster to edit projects
this way”
No Boom = No Addiction
I use it for
everything
I use it because it
solves a pain
Damn them for
making me use this
shi#$%#
Boom
Fast Enough
Not Fast Enough
Invest in speed
It’s one of the best things
to spend your time on.
New killer feature: Serve 10% of users
Boom Performance: Serve 100% of users
Why speed is something
developers should be in charge of?
Product people rarely know what to ask
“Can you make this faster?”
BOOM Performance
How to achieve
The Basics
The Basics – Checklist
 Minify JS + CSS
 Gzip compression
 Optimize images (PNG)
 CDN
 Prioritize visible content (CSS / JS)
 Remove render-blocking JS (Move to bottom of HTML)
Don’t shoot yourself in the foot
for (var i=0; i < posts.length; i++) {
...
}
$('#item').css('color', '#123456');
$('#item').html('hello');
$('#item').css('background-color', '#ffffff');
var x = $(“.post_wrapper > .reply”).data();
// you could use this instead
$('#item').css('color', '#123456').html('hello').css('background', '#ffffff');
// or even
var $item = $('#item');
$item.css('color', '#123456');
$item.html('hello');
$item.css('background-color', '#ffffff');
Things that make the DOM Heavy
• Use with caution:
Round Corners, Box Shadows, Opacity
• Beware of binding scroll callback events
• Avoid using too many elements
(especially in repeatable elements)
• GPU Rendering - Translate3d(0,0,0) / TranslateZ(0)
<div>
<div>
<span><a href></a></span>
</div>
</div>
Always keep 60fps scroll performance
CPU Rendering GPU Rendering
.mover {
background: url("particle.png");
height: 100px;
width: 100px;
position: absolute;
-webkit-transform: translate3d(0,0,0);
}
.mover {
background: url("particle.png");
height: 100px;
width: 100px;
position: absolute;
}
Vs.
Optimistic Actions
Instagram Example
Instagram starts uploading
here
Most apps start uploading
here
Facebook Example
// Make AJAX request to create post for user
$.ajax("/user/post", {
type: "POST”,
data: { from_date: this.from_date },
dataType: "json”,
success: function(data) {
},
error: function(data) {
// Notify the user on error
...
...
}
});
// Render new post in the UI
... ... ...
... ...
Don’t wait for success. Operate
daPulse - Signup Example
[GET] check_sub_domain/a
[GET] check_sub_domain/ab
[GET] check_sub_domain/abc
abc
• If you know the expected result in the client
(adding a user to a list, writing a reply, liking a comment, deleting an object, etc…):
Assume it worked and render it BOOM fast in the UI.
• Most of the time, if it fails, don’t do anything (or rollback
to previous state).
Think Positive
Action Prediction
prefetch, preload, predict
<link rel="prefetch" href="http://dapulse.com/dapulse.js />
Prefetch & Preload
<link rel="prerender" href="http://example.org/index.html">
<link rel="preconnect" href="//www.example.com”>
1. Prefetch (CSS / JS from your homepage)
2. Prerender (Loads entire web page – html, css, js)
3. Preconnect (Opens TCP Connection)
Your users are predictable
They will do the same searches & selections 80% of the time.
 Track what your users are searching or selecting.
 Preload that into the client.
 Assume “history will repeat itself” and render it
fast in the UI.
 Achieve user happiness :)
Predict your users. How?
Provide results from the client
Client side libraries
• Typeahead.js – Strong client side search / autocomplete.
• Lunr.js – Powerful client-side Solr / ElasticSearch alternative.
• Localstorage is your friend
– Draft saving
– Result caching
The fastest request is “no request”
(a wise man)
Perceived Performance
Credit: http://blog.teamtreehouse.com/perceived-performance
Perceived Speed Improvement
• Gradual UI loading
• Progress bars
• Buttons hover + active state + ladda.js
• Animations
(but don’t animate for more than 100ms)
daPulse
Boards case study
We’ve tried
 Ajax request + server side caching
 Client side pagination
 TranslateZ (0,0,0) – bad decision
 Reduce HTML elements
 Gradual Rendering
<div>
<div>
<span><a href=“”></a></span>
</div>
</div>
<div>
<a href=“”></a>
</div>
Takeaways
Takeaways
1. Boom Performance = User happiness.
2. Don’t skip the basic optimization stuff.
3. Unless you must wait for the server – don’t!
4. Fetch the data just before the user needs it.
5. If you can’t make it – fake it (perceived performance).
Thank you!
eranz@dapulse.com
BOOM PERFORMANCE!
eranz@dapulse.com

Contenu connexe

Tendances

Christmas Trees Made with HTML CSS and JS
Christmas Trees Made with HTML CSS and JSChristmas Trees Made with HTML CSS and JS
Christmas Trees Made with HTML CSS and JSNiamh Foley
 
Railsbridge intro
Railsbridge introRailsbridge intro
Railsbridge introp4geoff
 
The Future of CSS with Web Components
The Future of CSS with Web ComponentsThe Future of CSS with Web Components
The Future of CSS with Web ComponentsColdFusionConference
 
jQuery Performance Tips and Tricks
jQuery Performance Tips and TricksjQuery Performance Tips and Tricks
jQuery Performance Tips and TricksValerii Iatsko
 
Cache Money Business
Cache Money BusinessCache Money Business
Cache Money BusinessMark Jaquith
 
Mojolicious, real-time web framework
Mojolicious, real-time web frameworkMojolicious, real-time web framework
Mojolicious, real-time web frameworktaggg
 
Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)
Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)
Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)James Quick
 
J Query Presentation
J Query PresentationJ Query Presentation
J Query PresentationVishal Kumar
 
Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Raymond Camden
 
Multimedia on the web - HTML5 video and audio
Multimedia on the web - HTML5 video and audioMultimedia on the web - HTML5 video and audio
Multimedia on the web - HTML5 video and audioChristian Heilmann
 
ARTDM 170 Week 3: Rollovers
ARTDM 170 Week 3: RolloversARTDM 170 Week 3: Rollovers
ARTDM 170 Week 3: RolloversGilbert Guerrero
 
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}Eric Carlisle
 
Building a PWA - For Everyone Who Is Scared To
Building a PWA - For Everyone Who Is Scared ToBuilding a PWA - For Everyone Who Is Scared To
Building a PWA - For Everyone Who Is Scared ToRaymond Camden
 
Joomla wireframing Template - Joomladay Netherlands 2014 #jd14nl
Joomla wireframing Template - Joomladay Netherlands 2014 #jd14nlJoomla wireframing Template - Joomladay Netherlands 2014 #jd14nl
Joomla wireframing Template - Joomladay Netherlands 2014 #jd14nlPhilip Locke
 
Upstate CSCI 450 WebDev Chapter 4
Upstate CSCI 450 WebDev Chapter 4Upstate CSCI 450 WebDev Chapter 4
Upstate CSCI 450 WebDev Chapter 4DanWooster1
 
Build a Better Editing Experience with Advanced Custom Fields
Build a Better Editing Experience with Advanced Custom FieldsBuild a Better Editing Experience with Advanced Custom Fields
Build a Better Editing Experience with Advanced Custom FieldsJeseph Meyers
 
Web Components: What, Why, How, and When
Web Components: What, Why, How, and WhenWeb Components: What, Why, How, and When
Web Components: What, Why, How, and WhenPeter Gasston
 

Tendances (20)

Christmas Trees Made with HTML CSS and JS
Christmas Trees Made with HTML CSS and JSChristmas Trees Made with HTML CSS and JS
Christmas Trees Made with HTML CSS and JS
 
Railsbridge intro
Railsbridge introRailsbridge intro
Railsbridge intro
 
The Future of CSS with Web Components
The Future of CSS with Web ComponentsThe Future of CSS with Web Components
The Future of CSS with Web Components
 
jQuery Performance Tips and Tricks
jQuery Performance Tips and TricksjQuery Performance Tips and Tricks
jQuery Performance Tips and Tricks
 
Cache Money Business
Cache Money BusinessCache Money Business
Cache Money Business
 
Mojolicious, real-time web framework
Mojolicious, real-time web frameworkMojolicious, real-time web framework
Mojolicious, real-time web framework
 
Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)
Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)
Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)
 
J Query Presentation
J Query PresentationJ Query Presentation
J Query Presentation
 
Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Don't Over-React - just use Vue!
Don't Over-React - just use Vue!
 
Using HTML5 sensibly
Using HTML5 sensiblyUsing HTML5 sensibly
Using HTML5 sensibly
 
Multimedia on the web - HTML5 video and audio
Multimedia on the web - HTML5 video and audioMultimedia on the web - HTML5 video and audio
Multimedia on the web - HTML5 video and audio
 
ARTDM 170 Week 3: Rollovers
ARTDM 170 Week 3: RolloversARTDM 170 Week 3: Rollovers
ARTDM 170 Week 3: Rollovers
 
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
 
Web components
Web componentsWeb components
Web components
 
Building a PWA - For Everyone Who Is Scared To
Building a PWA - For Everyone Who Is Scared ToBuilding a PWA - For Everyone Who Is Scared To
Building a PWA - For Everyone Who Is Scared To
 
Joomla wireframing Template - Joomladay Netherlands 2014 #jd14nl
Joomla wireframing Template - Joomladay Netherlands 2014 #jd14nlJoomla wireframing Template - Joomladay Netherlands 2014 #jd14nl
Joomla wireframing Template - Joomladay Netherlands 2014 #jd14nl
 
Upstate CSCI 450 WebDev Chapter 4
Upstate CSCI 450 WebDev Chapter 4Upstate CSCI 450 WebDev Chapter 4
Upstate CSCI 450 WebDev Chapter 4
 
Build a Better Editing Experience with Advanced Custom Fields
Build a Better Editing Experience with Advanced Custom FieldsBuild a Better Editing Experience with Advanced Custom Fields
Build a Better Editing Experience with Advanced Custom Fields
 
Web Components: What, Why, How, and When
Web Components: What, Why, How, and WhenWeb Components: What, Why, How, and When
Web Components: What, Why, How, and When
 
Cucumber
CucumberCucumber
Cucumber
 

Similaire à BOOM Performance

Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016Doris Chen
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Aaron Gustafson
 
Frontend Performance: Illusions & browser rendering
Frontend Performance: Illusions & browser renderingFrontend Performance: Illusions & browser rendering
Frontend Performance: Illusions & browser renderingManuel Garcia
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaksdevObjective
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup PerformanceJustin Cataldo
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX DesignersAshlimarie
 
Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019Katie Sylor-Miller
 
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...Roni Banerjee
 
Responsive content
Responsive contentResponsive content
Responsive contenthonzie
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSNaga Harish M
 
Responsive Responsive Design
Responsive Responsive DesignResponsive Responsive Design
Responsive Responsive DesignTim Kadlec
 
Mobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignMobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignCantina
 
Rails, Postgres, Angular, and Bootstrap: The Power Stack
Rails, Postgres, Angular, and Bootstrap: The Power StackRails, Postgres, Angular, and Bootstrap: The Power Stack
Rails, Postgres, Angular, and Bootstrap: The Power StackDavid Copeland
 
Building Faster Websites
Building Faster WebsitesBuilding Faster Websites
Building Faster WebsitesCraig Walker
 
Responsive Websites
Responsive WebsitesResponsive Websites
Responsive WebsitesJoe Seifi
 
Performance Best Practices - Part 1 - Client Side [JS, CSS, HTML, jQuery]
Performance Best Practices - Part 1 - Client Side [JS, CSS, HTML, jQuery]Performance Best Practices - Part 1 - Client Side [JS, CSS, HTML, jQuery]
Performance Best Practices - Part 1 - Client Side [JS, CSS, HTML, jQuery]Mindfire Solutions
 
HTML5 and CSS3 Shizzle
HTML5 and CSS3 ShizzleHTML5 and CSS3 Shizzle
HTML5 and CSS3 ShizzleChris Mills
 
Ajax to the Moon
Ajax to the MoonAjax to the Moon
Ajax to the Moondavejohnson
 

Similaire à BOOM Performance (20)

Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]
 
Frontend Performance: Illusions & browser rendering
Frontend Performance: Illusions & browser renderingFrontend Performance: Illusions & browser rendering
Frontend Performance: Illusions & browser rendering
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaks
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
Please dont touch-3.6-jsday
Please dont touch-3.6-jsdayPlease dont touch-3.6-jsday
Please dont touch-3.6-jsday
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019
 
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
 
Responsive content
Responsive contentResponsive content
Responsive content
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JS
 
Responsive Responsive Design
Responsive Responsive DesignResponsive Responsive Design
Responsive Responsive Design
 
Mobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignMobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web Design
 
Rails, Postgres, Angular, and Bootstrap: The Power Stack
Rails, Postgres, Angular, and Bootstrap: The Power StackRails, Postgres, Angular, and Bootstrap: The Power Stack
Rails, Postgres, Angular, and Bootstrap: The Power Stack
 
Building Faster Websites
Building Faster WebsitesBuilding Faster Websites
Building Faster Websites
 
Responsive Websites
Responsive WebsitesResponsive Websites
Responsive Websites
 
Performance Best Practices - Part 1 - Client Side [JS, CSS, HTML, jQuery]
Performance Best Practices - Part 1 - Client Side [JS, CSS, HTML, jQuery]Performance Best Practices - Part 1 - Client Side [JS, CSS, HTML, jQuery]
Performance Best Practices - Part 1 - Client Side [JS, CSS, HTML, jQuery]
 
Site optimization
Site optimizationSite optimization
Site optimization
 
HTML5 and CSS3 Shizzle
HTML5 and CSS3 ShizzleHTML5 and CSS3 Shizzle
HTML5 and CSS3 Shizzle
 
Ajax to the Moon
Ajax to the MoonAjax to the Moon
Ajax to the Moon
 

Dernier

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 

Dernier (20)

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

BOOM Performance

  • 2. About me … Co-founded & R&D Manager @ Co-founder & CTO @ eranz@dapulse.com
  • 3. So… what is BOOM Performance?
  • 4. Fast Super Fast Super Duper Fast BOOM Boom Speed is the time it takes to say “Boom”
  • 5. 0-100ms 100-300ms 300-1000ms 1000ms 10,000ms Let’s put it in numbers: INSTANT (BOOM) Small perceptible delay Machine is working Likely mental context switch Doesn’t work?
  • 7. Speed affects your product and the happiness of your users. And trust me - You don’t know when they suffer.
  • 8. Boom Speed = More Usage Fast:Super Fast:Boom:
  • 9. Boom Speed = Simpler UI When your UI is slow users will ask you for features that will make your UI more condensed. - This will make your product worse. “Can you add the edit button on the main project list page? It will be faster to edit projects this way”
  • 10. No Boom = No Addiction I use it for everything I use it because it solves a pain Damn them for making me use this shi#$%# Boom Fast Enough Not Fast Enough
  • 11. Invest in speed It’s one of the best things to spend your time on. New killer feature: Serve 10% of users Boom Performance: Serve 100% of users
  • 12. Why speed is something developers should be in charge of? Product people rarely know what to ask “Can you make this faster?”
  • 15. The Basics – Checklist  Minify JS + CSS  Gzip compression  Optimize images (PNG)  CDN  Prioritize visible content (CSS / JS)  Remove render-blocking JS (Move to bottom of HTML)
  • 16. Don’t shoot yourself in the foot for (var i=0; i < posts.length; i++) { ... } $('#item').css('color', '#123456'); $('#item').html('hello'); $('#item').css('background-color', '#ffffff'); var x = $(“.post_wrapper > .reply”).data(); // you could use this instead $('#item').css('color', '#123456').html('hello').css('background', '#ffffff'); // or even var $item = $('#item'); $item.css('color', '#123456'); $item.html('hello'); $item.css('background-color', '#ffffff');
  • 17. Things that make the DOM Heavy • Use with caution: Round Corners, Box Shadows, Opacity • Beware of binding scroll callback events • Avoid using too many elements (especially in repeatable elements) • GPU Rendering - Translate3d(0,0,0) / TranslateZ(0) <div> <div> <span><a href></a></span> </div> </div> Always keep 60fps scroll performance
  • 18. CPU Rendering GPU Rendering .mover { background: url("particle.png"); height: 100px; width: 100px; position: absolute; -webkit-transform: translate3d(0,0,0); } .mover { background: url("particle.png"); height: 100px; width: 100px; position: absolute; } Vs.
  • 20. Instagram Example Instagram starts uploading here Most apps start uploading here
  • 22.
  • 23. // Make AJAX request to create post for user $.ajax("/user/post", { type: "POST”, data: { from_date: this.from_date }, dataType: "json”, success: function(data) { }, error: function(data) { // Notify the user on error ... ... } }); // Render new post in the UI ... ... ... ... ... Don’t wait for success. Operate
  • 24. daPulse - Signup Example [GET] check_sub_domain/a [GET] check_sub_domain/ab [GET] check_sub_domain/abc abc
  • 25. • If you know the expected result in the client (adding a user to a list, writing a reply, liking a comment, deleting an object, etc…): Assume it worked and render it BOOM fast in the UI. • Most of the time, if it fails, don’t do anything (or rollback to previous state). Think Positive
  • 27. <link rel="prefetch" href="http://dapulse.com/dapulse.js /> Prefetch & Preload <link rel="prerender" href="http://example.org/index.html"> <link rel="preconnect" href="//www.example.com”> 1. Prefetch (CSS / JS from your homepage) 2. Prerender (Loads entire web page – html, css, js) 3. Preconnect (Opens TCP Connection)
  • 28. Your users are predictable They will do the same searches & selections 80% of the time.
  • 29.  Track what your users are searching or selecting.  Preload that into the client.  Assume “history will repeat itself” and render it fast in the UI.  Achieve user happiness :) Predict your users. How?
  • 30. Provide results from the client
  • 31. Client side libraries • Typeahead.js – Strong client side search / autocomplete. • Lunr.js – Powerful client-side Solr / ElasticSearch alternative. • Localstorage is your friend – Draft saving – Result caching
  • 32. The fastest request is “no request” (a wise man)
  • 35.
  • 36.
  • 37.
  • 38. Perceived Speed Improvement • Gradual UI loading • Progress bars • Buttons hover + active state + ladda.js • Animations (but don’t animate for more than 100ms)
  • 40.
  • 41.
  • 42. We’ve tried  Ajax request + server side caching  Client side pagination  TranslateZ (0,0,0) – bad decision  Reduce HTML elements  Gradual Rendering <div> <div> <span><a href=“”></a></span> </div> </div> <div> <a href=“”></a> </div>
  • 43.
  • 45. Takeaways 1. Boom Performance = User happiness. 2. Don’t skip the basic optimization stuff. 3. Unless you must wait for the server – don’t! 4. Fetch the data just before the user needs it. 5. If you can’t make it – fake it (perceived performance).