RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Профилирование кода в JBDump

С помощью JBDump можно не только дампить переменные, но и измерять время выполнения отдельно взятых фрагментов кода. Например так:

JBDump::mark('start loop');
echo 'start loop';
    // проблемное место с большим количеством действий
    $bigArray = array();
 
    for ($i=0; $i < 10000; $i++) { 
        $bigArray[$i] = $i+$bigArray[$i-1];
    }

    // сам отладчик (как и любые другие) тоже довольно прожорливый
    // это еще одна причина не использовать его на продуктиве
    jbdump($bigArray, 0, '$bigArray');

JBDump::mark('finish');
echo 'finish';

    jbdump::microtime();
    jbdump::memory();
    jbdump::microtime();

JBDump::mark('other functions');
echo 'other functions';
jbdump($var);

Заметьте, что явного вызова результатов профайлера нету, но тем не менее он выводиться. Это можно настроить.

Явный вызов результатов профилирования

JBDump::profiler();
JBDump::profiler(1); // перенаправление ответа в лог файл

Живой пример

Пример содержимого лог файла профайлера:

Profiler start -------------------------------------------------------
Mark #0 0.000 seconds (+0.000); 0.37 MB (+0.366) profiler.php:17 - start loop
Mark #1 0.280 seconds (+0.279); 3.23 MB (+2.867) profiler.php:28 - finish
Mark #2 0.285 seconds (+0.005); 1.42 MB (-1.809) profiler.php:35 - other functions
Profiler finish -------------------------------------------------------

Информация, которая отобразиться в браузере и в лог файле — одинаковая. В скобках отображается разница во времени и использовании памяти в разных точках приложения. Например из предыдущего лога видно, что цикл и jbdump работали 0.279 секунды при этом использовал 2.867 МБ памяти. Далее PHP освободил память на 1.809 МБ (столько использовал jbdump для отрисовки массива в 10000 элементов). Всего прошло времени 0.285 сек.

Каждая отметка имеет свое название и место вызова. Таким образом наглядно видно куда использовалось время и память сервера.

Об этом стоит знать и помнить

Некоторые наверно заметили — первая отметка показывает, что уже использовалось 0.366 МБ памяти, хотя мы не ставили отметки ранее. При первом вызове JBDump отметил состояние системы автоматически (время и память). Это произошло в файле init.php (сработал конструктор класса)

Таким образом можно поставить в любом месте только одну отметку и получить результат профилирования от начала работы приложения до этой отметки. При этом даже не придется вызывать отрисовку результата. При соответствующих настройках — после вызова деструктора, die() или аварийного завершения скрипта автоматически сработает метод profiler(). Именно поэтому в примере профайлер отображается после сообщения «JBDump_die».

Смотрите также:
Комментарии (4) Добавить комментарий
  • price online
    price online
    15 Июня 2017, 01:45
     ↑  0  ↓     ответ

    I had been honored to get a call coming from a friend as soon as he uncovered the important guidelines shared on your own site.

    Looking at your blog posting is a real fantastic experience.

    Thanks again for thinking of readers much like me, and I would like for you the best of

    success being a professional in this arena.

  • Florrie
    Florrie
    23 Февраля 2021, 02:12
     ↑  0  ↓     ответ

    Hey there! Do you know if they make any plugins to help with SEO?

    I'm trying to get my blog to rank for some targeted

    keywords but I'm not seeing very good success. If you know of any please share.

    Thank you!

  • Aracelis
    Aracelis
    28 Января 2023, 07:47
     ↑  0  ↓     ответ

    To the joomla-book.ru administrator, Thanks for the well-organized and comprehensive post!

  • Аноним
    Аноним
    14 Июля 2023, 06:10
     ↑  0  ↓     ответ

    хифЬ

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.