Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Антон Епрев

Avatar for FrontFest FrontFest
November 21, 2017

Антон Епрев

Avatar for FrontFest

FrontFest

November 21, 2017
Tweet

More Decks by FrontFest

Other Decks in Programming

Transcript

  1. Как собирать фреймрейт метрику* 1. Собирайте релевантные данные 2. Сводите

    к минимуму эффект наблюдателя 3. Избегайте смещения выборки * И любую другую метрику производительности
  2. Фреймрейт сервис let stopped = true; let timer; window.addEventListener("scroll", ()

    => { if (stopped) { stopped = false; start(); } else { clearTimeout(timer); } timer = setTimeout(() => stopped = true, 200); });
  3. Фреймрейт сервис (продолжение) 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); } }); }
  4. A/A тест: Средние значения фреймрейт 1 % 10 % 25

    % 50 % 75 % 90 % 95 % 99 % 2 26 40 51 57 60 60 60
  5. Тест 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
  6. Jank тест (function jank() { var ts = Date.now(); while

    (Date.now() - ts < 30); setTimeout(jank, 100); }());
  7. 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
  8. 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
  9. Резюме – Не пытайтесь улучшить то, чего не можете увидеть

    – Собирайте релевантные метрики – Избегайте необъективности – Что работает для нас, может не работать для вас