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
Performance em jQuery Apps
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Davidson Fellipe
April 24, 2012
Programming
190
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Performance em jQuery Apps
Davidson Fellipe
April 24, 2012
More Decks by Davidson Fellipe
See All by Davidson Fellipe
Adventures from Enzyme to React Testing Library
fellipe
1
390
O melhor da monitoração de web performance
fellipe
0
460
Guia do Front-end das galáxias
fellipe
3
290
Workflow para desenvolvimento web e mobile usando gruntjs
fellipe
2
160
Como é trabalhar na Globo.com?
fellipe
3
130
Guia prático de desenvolvimento front-end para django devs
fellipe
1
190
Practical guide for front-end development for Django Devs
fellipe
0
120
Esse cara é o Grunt
fellipe
9
870
It's Javascript Time
fellipe
6
550
Other Decks in Programming
See All in Programming
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
250
Creating Composable Callables in Contemporary C++
rollbear
0
130
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.6k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.1k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
170
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
330
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
240
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.7k
net-httpのHTTP/2対応について
naruse
0
480
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
540
Agentic UI
manfredsteyer
PRO
0
160
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Believing is Seeing
oripsolob
1
140
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
Un-Boring Meetings
codingconduct
0
310
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
180
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
Transcript
performance em jQuery apps por davidson fellipe
sobre mim • técnico em eletrônica • engenheiro da computação
pela upe • desenvolvedor na globo.com • quase mestrando em informática na puc-rio • @davidsonfellipe
por que melhorar a performance?
redução de bytes redução de requests reduzir o trabalho que
o browser tem de fazer
não use jQuery, ao menos que ele seja necessário
...pois alguns metodos podem ser mais faceis do que você
imagina size: function() {return this.length;},
$('a').bind(‘click’, function(){ console.log('elemento clicado: ' + $(this).attr('id')); }); $('a').bind(‘click’, function(){
console.log('elemento clicado: ' + this.id); });
por que usar a última versão?
um problema por usar versão antiga...
um problema por usar versão antiga...
operações por segundo
operações por segundo
teste! teste! teste! antes de fazer a migração
...mas evite linkar para última versão <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
combine, minifique e gzipping seus scripts
Tente compactar todos os script em apenas 1 arquivo YUI
Compressor Muitos browsers não estão aptos a processar mais que 1 script paralelamente
comparativo entre performance de seletores
comparativo entre performance de seletores
evite o seletor universal $(“.box > *”) $(“.box”).children()
evite o seletor universal implicito $(“.box :radio”) $(“.box *:radio”) $(“.box
input:radio”)
1) $parent.find(‘.child’).show(); //+ rapida 2) $(‘.child", $parent).show(); //~5-10% + lenta
3) $('.child', $('#parent')).show(); //~23% + lenta 4) $parent.children(".child’).show(); //~50% + lenta 5) $(‘#parent > .child’).show(); //~70% + lenta 6) $(‘#parent .child’).show(); //~77% + lenta http://jsperf.com/jquery-selectors-context/2 formas de seleção
console.time console.timeEnd
evite manipulações desnecessárias do DOM
for( i = 0; i < 5000; i++){ $("body").css("background-color", "#f00");
$("body").addClass("fonte-maior"); } //acesso ao DOM várias vezes: 197ms var $body = $("body"); for( i = 0; i < 5000; i++){ $body.css("background-color", "#f00"); $body.addClass("fonte-maior"); } //cacheando o seletor: 158ms
use encadeamento
var $body = $("body"); for(i=0;i<10000;i++){ $body.css("background-color", "#f00"); $body.addClass("fonte-maior"); } //sem
chaining: 325ms var $body = $("body"); for(i=0;i<10000;i++){ $body.css("background-color", "#f00").addClass("fonte-maior"); } //com chaining: 308ms
Use contexto em seus seletores
var $contexto = $(".feed"); for(i=0;i<10000;i++){ $(".materia-titulo", $contexto).css("background-color", "#f00"); } //com
contexto: 1883ms for(i=0;i<10000;i++){ $(".materia-titulo").css("background-color", "#f00"); } //sem contexto: 2381ms
Use For ao invés de Each
Use id ao invés de classes
use cache fellipe.com/slides/jqueryfn
entenda o código-fonte do jQuery http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js
None
None
None
None
performance x legibilidade
obrigado! • @davidsonfellipe • www.fellipe.com • github.com/davidsonfellipe • www.slideshare.net/davidsonfellipe •
outros sites: fellipe ou davidsonfellipe