SJ Hook Profiler

В погоне за микросекундами

Разработчики плагинов и используют две функции для расширения функциональности /: это add_action() и add_filter(). Первая служит для установки обработчика некоторого события, вторая — для установки фильтра. Под хуком подразумевается обобщённое понятие (либо фильтр, либо обработчик).

Как показывает практика, большая часть времени генерации страницы уходит именно на вызов обработчиков и фильтров. И когда возникает вопрос: почему время генерации страницы такое большое, а запроса всего три, и они выполняются за сотые доли секунды, на помощь приходит данный плагин.

В отличие от WP Tuner, которому явно нужно указывать, какие события нужно профилировать, автоматически определяет все используемые хуки и устанавливает обработчики, измеряющие их время работы. На выходе получается что-то вида данной таблицы:

Hook Name Total Time Invocations Average Time
pre_option_gmt_offset 0.000169 1 0.000169
option_blog_charset 0.000405 11 0.000037
plugins_loaded 0.014295 1 0.014295
option_siteurl 0.000810 26 0.000031
option_home 0.004852 160 0.000030
sanitize_comment_cookies 0.000117 1 0.000117
option_category_base 0.000029 1 0.000029
option_tag_base 0.000027 1 0.000027
setup_theme 0.000030 1 0.000030
wp_default_scripts 0.001951 1 0.001951
set_current_user 0.000114 1 0.000114
init 0.011603 1 0.011603
widgets_init 0.003384 1 0.003384
wp_default_styles 0.000349 1 0.000349
query_vars 0.000036 1 0.000036
sanitize_title 0.001518 17 0.000089
posts_where 0.000033 1 0.000033
the_posts 0.000127 1 0.000127
template_redirect 0.000541 1 0.000541
bloginfo 0.002297 8 0.000287
term_name 0.000621 2 0.000310
term_description 0.000982 2 0.000491
single_post_title 0.000468 2 0.000234
wp_title 0.000747 2 0.000373
wp_head 0.020773 1 0.020773
comments_open 0.000373 4 0.000093
the_title 0.011747 46 0.000255
wp_print_styles 0.000175 2 0.000088
style_loader_src 0.000330 9 0.000037
wp_print_scripts 0.000440 1 0.000440
print_scripts_array 0.000050 1 0.000050
wp_list_pages 0.000305 1 0.000305
the_author 0.000534 2 0.000267
the_content 1.004469 1 1.004469
comment_text 0.001105 1 0.001105
pings_open 0.000087 1 0.000087
comment_form 0.007084 1 0.007084
widget_title 0.001137 4 0.000284
list_cats 0.004768 22 0.000217
wp_footer 0.009798 1 0.009798
wp_print_footer_scripts 0.000115 1 0.000115

Из таблицы видно, что слабое место — это вызов фильтра the_content (вызов более одной секунды), и копать нужно именно в сторону оптимизации фильтров the_content. Пока не поддерживается профилирование каждого обработчика (то есть делаются замеры до вызова первого обработчика the_content и после вызова последнего), но это в планах.

Особенность плагина — поддержка как , так и .

По умолчанию плагин активен только для администратора () и Key Master (); изменить это можно, повесив обработчик на фильтр enable_hook_profiler (должен вернуть true, если профайлер нужно активировать и false в противном случае).

История изменений:

  • Версия 0.1:
    • Первая версия плагина: поддержка и ;
  • Версия 0.2:
    • Исправлена ошибка, приводящая к выдачи предупреждения PHP Warning: Missing argument 1 for SjProfiler::end_profile() in /wp-content/plugins/sj-hook-profiler/lib/class.Profiler.php on line 74;
    • Ускорение производительности благодаря оптимизации кода.
  • Версия 0.2.1:
    • Добавлена поддержка  2.7.x (возможно, и более ранних версий).

Домашняя страница плагина на wordpress.org.

Внимание: плагин написан на PHP 5, PHP 4 не поддерживается принципиально.

Добавить в закладки

Связанные записи

Автор: Vladimir; метки: bbPress, SJ Hook Profiler, WordPress, оптимизация, плагин, производительность

RSS Комментарии к статье «SJ Hook Profiler» (4)  »

  1. Плагин ругается:
    Fatal error: Call to undefined function esc_attr() in /var/www/bagrincev.ru/wp-content/plugins/sj-hook-profiler/sj-hook-profiler.php on line 89

    И не работает =(

Оставить комментарий к записи «SJ Hook Profiler»

Вы должны быть авторизованы, чтобы иметь возможность оставить комментарий.

Подписаться, не комментируя