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

Антон Епрев

FrontFest
November 21, 2017

Антон Епрев

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. Резюме – Не пытайтесь улучшить то, чего не можете увидеть

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