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
Антон Епрев
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
FrontFest
November 21, 2017
Programming
710
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Антон Епрев
FrontFest
November 21, 2017
More Decks by FrontFest
See All by FrontFest
Тим Чаптыков
frontfest
0
1.2k
Егор Банщиков
frontfest
0
900
Jose M. Perez
frontfest
0
760
Алексей Иванов
frontfest
0
1.4k
Екатерина Пригара
frontfest
0
720
Léonie Watson
frontfest
0
790
Кирилл Чернышев
frontfest
0
770
Виктор Грищенко
frontfest
0
660
Игорь Алексеенко
frontfest
0
510
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.6k
すこし踏み込む CancellationToken
htkym
2
1.5k
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
160
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
280
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
400
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
9.2k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
180
App Intentsのビルドプロセスを支える技術
kntkymt
0
480
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
140
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
220
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
190
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
340
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
540
Technical Leadership for Architectural Decision Making
baasie
3
580
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Docker and Python
trallard
47
4.2k
Skip the Path - Find Your Career Trail
mkilby
1
240
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
270
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
250
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