Практичное профилирование производительности

Андрей «Rarst» Савченко, WordPress Kitchen Conference 2015

Практичное профилирование производительности

Андрей «Rarst» Савченко

Map

200мс

граница интерактивности

цель №1

детализация 10мс

Интернет Вам врёт

  1. Включить расширение для профилирования…
  2. Загрузить страницу…
  3. Найти созданный файл профиля…
  4. Запустить просмотрщик…
  5. Загрузить профиль в просмотрщик…

Нет.

цель №2

0..2 кликов

Простая установка, мало подробностей

var_dump() профилирования

printf(
	'%d queries in %.3f seconds, using %.2fMB memory',
	get_num_queries(),
	timer_stop( 0, 3 ),
	memory_get_peak_usage() / 1024 / 1024
);
// 3 queries in 0.251 seconds, using 4.42MB memory

Symfony Stopwatch

$stopwatch = new Stopwatch();
$stopwatch->start( 'eventName' );
// some code goes here
$event = $stopwatch->stop( 'eventName' );
echo $event->getDuration(); // 202
echo $event->getMemory(); // 3670016
symfony.com/doc/current/components/stopwatch
Laps interface

Laps

github.com/Rarst/laps

Сложная установка, много подробностей

XHProf / uprofiler

github.com/FriendsOfPHP/uprofiler

Blackfire

blackfire.io Blackfire logo
uProfiler in action

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

Полностью в браузере.

Фоновое профилирование

New Relic

newrelic.com New Relic logo

WP Performance Profiler

wpperformanceprofiler.interconnectit.com

в понедельник

установите Laps

а потом

исследуйте результаты

Спасибо, что выслушали! Вопросы?

@Rarst
Rarst.net/slides/profiling-ru
Rarst.net/slides/profiling-ru/code