Profilowanie kodu PHP za pomocą XHProf
XHProf to profiler kodu PHP opracowany przez twórców Facebooka. Pozwala on zanalizować ścieżkę wykonywania się kodu, jak i zużycie czasu procesora, pamięci, czy czasu wykonywania się poszczególnych elementów kodu. Kod dostępny jest na pecl.php.net, a dokumentacja znajduje się na stronie facebooka.
Instalacja
XHProf dostępny jest dla 32-bitowych (x86) systemów Uniksowych (Linux, BSD) jako binarne rozszerzenie PHP (najnowsza wersja wymaga PHP 5.2.0 lub nowszego). Kompilacja wygląda standardowo (do instalacji wymagane prawa roota, lub sudo, kod znajduje się w podkatalogu "extension"):
Profilowanie kodu PHP
- Na początku profilowanego kodu dodajemy:
xhprof_enable(XHPROF_FLAGS_MEMORY + XHPROF_FLAGS_CPU);
- Na końcu wstawiamy kod:
Wstawiając ścieżkę do katalogów xhprof_lib i xhprof_html skopiowanych z paczki xhprof w jakieś dostępne miejsce na serwerze (np. do katalogu z profilowanym kodem).
<?php $xhprof_data = xhprof_disable(); include_once "*/xhprof_lib/utils/xhprof_lib.php"; include_once "*/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "my_test"); echo '<a href="http://localhost/****/xhprof_html/index.php?run='.$run_id.'&source=my_test">wyniki</a>';
- Wystarczy wykonać kod (otworzyć stronę w przeglądarce), a wyniki zostaną wygenerowane i będzie można je przeglądać pod wskazanym linkiem.
- Dane prezentowane są w sortowalnej tabeli zawierającej dane o czasie wykonywania, zużyciu procesora i RAMu dla poszczególnych elementów kodu, jak i grafy zależności wykonywania się kodu:
W porównaniu do XDebug jest to narzędzie bardziej skomplikowane i dla "szybkiego" zorientowania się w wydajności kodu może być mniej pomocne. Na pewno warto zainteresować się XHProf, gdy potrzebujemy bardziej dokładnych danych (zużycie procesora, porównywanie dwóch przebiegów profilowania).
Comment article