47

Михаил Корепанов — Profiler: Профилирование кода

  • Upload
    yandex

  • View
    2.766

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Михаил Корепанов — Profiler: Профилирование кода
Page 2: Михаил Корепанов — Profiler: Профилирование кода

Разработчик интерфейсов

Профилирование

Михаил Корепанов

Page 3: Михаил Корепанов — Profiler: Профилирование кода

Профилирование — сбор характеристик работы программы для дальнейшего анализа.

Page 4: Михаил Корепанов — Profiler: Профилирование кода

Сначала сделайте, чтобы работало.

Page 5: Михаил Корепанов — Profiler: Профилирование кода

Потом, чтобы работало быстро.

Page 6: Михаил Корепанов — Profiler: Профилирование кода

Потом, чтобы работало быстро (если понадобится)

Page 7: Михаил Корепанов — Profiler: Профилирование кода

Быстро?

Page 8: Михаил Корепанов — Profiler: Профилирование кода

1-2 секунды —первоначальная загрузка.

Page 9: Михаил Корепанов — Profiler: Профилирование кода

100 мс — время реакции на действие.

Page 10: Михаил Корепанов — Profiler: Профилирование кода

Какие есть инструменты?

Page 11: Михаил Корепанов — Profiler: Профилирование кода

Профилирование сети

Page 12: Михаил Корепанов — Profiler: Профилирование кода

Firebug Net Panel

Page 13: Михаил Корепанов — Profiler: Профилирование кода

Web Inspector Network

Page 14: Михаил Корепанов — Profiler: Профилирование кода

IE9 Developer Tools

Page 15: Михаил Корепанов — Profiler: Профилирование кода

Opera Dragonfly

Page 16: Михаил Корепанов — Profiler: Профилирование кода

На что обратить вниманиеКоличество запросов

Page 17: Михаил Корепанов — Profiler: Профилирование кода

На что обратить вниманиеКоличество запросов

Время выполнения каждого запроса

Page 18: Михаил Корепанов — Profiler: Профилирование кода

На что обратить вниманиеКоличество запросов

Время выполнения каждого запроса

Есть ли блокирующие запросы

Page 19: Михаил Корепанов — Profiler: Профилирование кода

На что обратить вниманиеКоличество запросов

Время выполнения каждого запроса

Есть ли блокирующие запросы

Можно ли какие-то запросы распараллелить

Page 20: Михаил Корепанов — Profiler: Профилирование кода

Профилирование скриптов

Page 21: Михаил Корепанов — Profiler: Профилирование кода

До появления встроенных профайлеров

var begin = +new Date();myFunction();var end = +new Date();

// Время выполнения myFunctionvar time = end - begin;alert(time + ‘ ms’);

Page 22: Михаил Корепанов — Profiler: Профилирование кода

Web Inspector Profiles

Page 23: Михаил Корепанов — Profiler: Профилирование кода

Firebug profiler

Page 24: Михаил Корепанов — Profiler: Профилирование кода

IE9 Developer Tools Profiler

Page 25: Михаил Корепанов — Profiler: Профилирование кода

Что общего

Self — собственное время выполнения функции

Total — время выполнения, включая время вызываемых функций

Page 26: Михаил Корепанов — Profiler: Профилирование кода

Top Down view

Function1Function2

Function3

var Function1 = function() { Function2();};

var Function2 = function() { Function3();};

Page 27: Михаил Корепанов — Profiler: Профилирование кода

Bottom Up view

Function3Function2

Function1

var Function1 = function() { Function2();};

var Function2 = function() { Function3();};

Page 28: Михаил Корепанов — Profiler: Профилирование кода

Анонимные функции

Page 29: Михаил Корепанов — Profiler: Профилирование кода

Анонимные функции

Page 30: Михаил Корепанов — Profiler: Профилирование кода

Анонимные функции

var myFunc = function() { ... };myFunc.displayName = ‘myFunc’;

// Или

// Засоряет глобальную область видимости в IE < 8var myFunc = function myFunc() { ... };

Page 31: Михаил Корепанов — Profiler: Профилирование кода

Console API

var myFunc = function() { ... };

// Замерить время выполненияconsole.time(‘myFunc’);myFunc();console.timeEnd(‘myFunc’);

// Профилироватьconsole.profile(‘myFunc’);myFunc();console.profileEnd(‘myFunc’);

Page 32: Михаил Корепанов — Profiler: Профилирование кода

На что обратить вниманиеСобственное время выполнения функций

Page 33: Михаил Корепанов — Profiler: Профилирование кода

На что обратить внимание

Количество вызовов функций

Собственное время выполнения функций

Page 34: Михаил Корепанов — Profiler: Профилирование кода

Профилирование рендеринга

Page 35: Михаил Корепанов — Profiler: Профилирование кода

Reflow — процесс вычисления размеров и положения элемента на странице

Page 36: Михаил Корепанов — Profiler: Профилирование кода

Repaint — процесс отрисовки визуального отображения элемента

Page 37: Михаил Корепанов — Profiler: Профилирование кода

Web Inspector CSS Profiler

Page 38: Михаил Корепанов — Profiler: Профилирование кода

Web Inspector Timeline

Page 39: Михаил Корепанов — Profiler: Профилирование кода

Dragonfly CSS Profiler

Page 40: Михаил Корепанов — Profiler: Профилирование кода

На что обратить вниманиеМожно ли уменьшить количество перерисовок

Page 41: Михаил Корепанов — Profiler: Профилирование кода

На что обратить вниманиеМожно ли уменьшить количество перерисовок

Если тормозит paint можно ли переверстать

Page 42: Михаил Корепанов — Profiler: Профилирование кода

На что обратить вниманиеМожно ли уменьшить количество перерисовок

Если тормозит paint можно ли переверстать

Время матчинга селекторов

Page 43: Михаил Корепанов — Profiler: Профилирование кода

Комплексные инструменты

Page 44: Михаил Корепанов — Profiler: Профилирование кода

Google SpeedTracer

Page 45: Михаил Корепанов — Profiler: Профилирование кода

DynaTrace AJAX Edition

Page 46: Михаил Корепанов — Profiler: Профилирование кода

Полезные ссылки

http://stevesouders.com/

http://jsperf.com/

http://www.phpied.com/

http://www.igvita.com/

http://gent.ilcore.com

http://clck.ru/2XxQX

Page 47: Михаил Корепанов — Profiler: Профилирование кода

Разработчик интерфейсов

[email protected]

Спасибо

@panyakor

Михаил Корепанов