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
Антон Епрев
Search
FrontFest
November 21, 2017
Programming
0
700
Антон Епрев
FrontFest
November 21, 2017
Tweet
Share
More Decks by FrontFest
See All by FrontFest
Тим Чаптыков
frontfest
0
1.2k
Егор Банщиков
frontfest
0
890
Jose M. Perez
frontfest
0
750
Алексей Иванов
frontfest
0
1.4k
Екатерина Пригара
frontfest
0
700
Léonie Watson
frontfest
0
750
Кирилл Чернышев
frontfest
0
760
Виктор Грищенко
frontfest
0
650
Игорь Алексеенко
frontfest
0
500
Other Decks in Programming
See All in Programming
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
680
2026年 エンジニアリング自己学習法
yumechi
0
130
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
AI時代の認知負荷との向き合い方
optfit
0
150
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.8k
CSC307 Lecture 07
javiergs
PRO
0
550
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
「ブロックテーマでは再現できない」は本当か?
inc2734
0
920
Implementation Patterns
denyspoltorak
0
280
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
420
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
GitHub's CSS Performance
jonrohan
1032
470k
Are puppies a ranking factor?
jonoalderson
1
2.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Statistics for Hackers
jakevdp
799
230k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
79
Designing for Timeless Needs
cassininazir
0
130
A Soul's Torment
seathinner
5
2.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
49
KATA
mclloyd
PRO
34
15k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Transcript
История одной метрики производительности в Booking.com Антон Епрев @eprev
Статья Jake Archibald о rel=noopener – goo.gl/kLUYba <a href="https://example.com" target="_blank"
rel="noopener" > … </a>
None
A/B тестирование
<a href="…" target="_blank" > … </a> <a href="…" target="_blank" rel="noopener"
> … </a> A B
Не измерив, не улучшить!
Как собирать фреймрейт метрику* 1. Собирайте релевантные данные 2. Сводите
к минимуму эффект наблюдателя 3. Избегайте смещения выборки * И любую другую метрику производительности
«Time to Scroll»
Фреймрейт сервис let stopped = true; let timer; window.addEventListener("scroll", ()
=> { if (stopped) { stopped = false; start(); } else { clearTimeout(timer); } timer = setTimeout(() => stopped = true, 200); });
Фреймрейт сервис (продолжение) function start() { let frames = 0;
const ts = performance.now(); requestAnimationFrame(function raf() { frames++; if (stopped) { const fps = Math.round( frames * 1000 / (performance.now() - ts) ); } else { requestAnimationFrame(raf); } }); }
A/A тест: Средние значения фреймрейт 1 % 10 % 25
% 50 % 75 % 90 % 95 % 99 % 2 26 40 51 57 60 60 60
Тест rel=noopener: Средние значения фреймрейт 1 % 10 % 25
% 50 % 75 % 90 % 95 % 99 % 2 11 28 47 56 60 60 60 2 11 28 47 56 60 60 60
Jank тест (function jank() { var ts = Date.now(); while
(Date.now() - ts < 30); setTimeout(jank, 100); }());
Jank тест: Средние значения фреймрейт 1 % 10 % 25
% 50 % 75 % 90 % 95 % 99 % 3 29 42 52 58 60 60 60 2 24 38 49 55 59 60 60
Кол-во сессий и средние значения фреймрейт (desktop)
Кол-во сессий и средние значения фреймрейт (mobile)
Конверсия и средние значения фреймрейт X 6X
IE9 jank тест: Средние значения фреймрейт 1 % 10 %
25 % 50 % 75 % 90 % 95 % 99 % 2 25 37 44 50 55 59 60 2 22 32 40 46 52 55 60
Резюме – Не пытайтесь улучшить то, чего не можете увидеть
– Собирайте релевантные метрики – Избегайте необъективности – Что работает для нас, может не работать для вас
Спасибо! Антон Епрев @eprev