Profil (profiling) araçları
Xdebug ve XHProf ile profil çıkarıp darboğazları bulmayı öğrenirsin.
Profiling ne işe yarar?
Profiling, çalışan kodun nereye zaman harcadığını ölçmektir. Hata ayıklama değil, darboğaz bulmadır. Xdebug geliştirme sırasında adım adım izleme ve yığın izi verirken, XHProf üretim koşullarına yakın ortamlarda düşük yüküyle fonksiyon çağrı grafiği çıkarır.
Çıktıda her fonksiyonun çağrı sayısı (ct), duvar saati süresi (wt) ve CPU süresi (cpu) yer alır. Hot path, en çok zaman harcanan çağrı zinciridir; profilinizi buna göre okursunuz.
Çağrı grafiği ve hot path
Bir profil raporu, fonksiyonların çağrı ilişkilerini gösteren bir çağrı grafiğine dönüştürülebilir. Düğümler fonksiyonlar, kenarlar şuradan çağrıldı ilişkisidir. Hot path, kökten yaprağa giden ve toplam süresi en yüksek olan yoldur.
XHProf'un ham verisi bu grafiği yeniden kurmak için yeterlidir; çağrı sayısı (ct) yüksek ama duvar süresi (wt) düşük olan fonksiyonlar değil, asıl wt birikimi olan zincir optimize edilir. Yanlış hedef seçmemek için toplam wt'ye göre sıralama yapın.
Uygulama XHProf yüklülüğünü kontrol et
function_exists ile 'xhprof_enable' ara. Yüklüyse xhprof_enable() çağır, str_repeat('a', 1000) çalıştır, $data = xhprof_disable() ile veriyi topla ve echo count($data) . "\n" yazdır. Yüklü değilse echo "XHProf yüklü değil\n" yazdır.
Örnek çözümü göster
function_exists('xhprof_enable') true ise xhprof_enable(); str_repeat('a', 1000); $data = xhprof_disable(); echo count($data) . "\n";. else dalında echo "XHProf yüklü değil\n";.
Örnek çözüm:
<?php
if (function_exists('xhprof_enable')) {
xhprof_enable();
str_repeat('a', 1000);
$data = xhprof_disable();
echo count($data) . "\n";
} else {
echo "XHProf yüklü değil\n";
}
Kendini test et
-
xhprof_enable çağrısını tamamla
____(XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); $data = xhprof_disable();Cevabı göster
xhprof_enable(XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); $data = xhprof_disable(); -
XHProf'un düşük yükü neden önemli?
- Üretim koşullarında çalıştırılabilsin diye
- Hata ayıklamayı kolaylaştırmak için
- Daha az kod yazmak için
- Yığın izlerini gizlemek için
Cevabı göster
Üretim koşullarında çalıştırılabilsin diye — Doğru. Düşük yük, profili üretim benzeri koşullarda bile çalıştırmayı mümkün kılar.
-
Profiling kavramlarını eşleştir
- ct
- Çağrı sayısı
- wt
- Duvar saati süresi
- hot path
- En çok zaman harcanan zincir
- Xdebug
- Adım adım izleme