RomânăEnglish
 
exteon.ro - xt2callgrind
Acasă < Produse < Unelte PHP < xt2callgrind

Descarcă

Descarcă

Versiune: 1.0

Format: .gz (1K)

Acest script permite generarea de arbori de apeluri în format callgrind, pentru vizualizare cu KCachegrind din fişiere trace de tip .xt, generate de XDEBUG, pentru profiling.

 

Acest script a fost înlocuit de web3tracer PHP Profiler, care este un modul PHP pentru profiling, eliminând nevoia pentru unelte separate de post-procesare şi reducând overhead-ul profilării scripturilor.

 

Desi XDEBUG oferă facilitatea de a produce direct fişiere callgrind şi acestea sunt corect generate, formatul callgrind are o problemă de design, neoferind suficientă informaţie pentru regenerarea arborelui de execuţie. Din această cauză apar probleme la vizualizarea profilelor de apeluri recursive, KCacheGrind funizănd date de execuție eronate, de exemplu timpi de execuție ai funcțiilor mai mari de 100%. Desi KCacheGrind are o euristică de detecție a ciclurilor, neavând toate datele necesare în fișierul de trace, rezultatele "ghicite" prin această metodă sunt confuze și inexacte. Problema este documentată la http://bugs.xdebug.org/view.php?id=77

 

Scriptul rezolvă problemele cu apelurile recursive ale funcțiilor. El procesează trace-urile de tip .xt generate de XDEBUG, care conțin informația necesară. identifică buclele recursive și le decuplează, generând un fișier cachegrind exact și corect.

 

Caracteristici:

  • Identifică apelurile recursive de funcții și calculează corect timpii de execuție
  • Poate genera noduri pentru identificarea buclelor recursive
  • Produce un număr minim de noduri de apel recursiv, păstrând arborele apelurilor cât mai corect și intuitiv
  • Poate numerota apelurile catre una sau mai multe funcții, pentru a se putea vizualiza ușor apelurile care se comportă aberant

Utilizare:

PHP <5.3.0:

php xt2callgrind.php file

PHP >=5.3.0:

php xt2callgrind.php [options] -i file

Opțiuni (numai pentru PHP >5.3.0):

-i <trace.xt>
        --input=<trace.xt>
            Fișierul de intrare .xt (obligatoriu)
        -x <nume_functie>
        --expand=<nume_functie>
            Expandează apelurile la funcția specificată, adăugând un sufix de forma
            (N). Util pentru identificarea funcțiilor cu apeluri aberante, când un
            singur apel din sute consumă un interval de timp mare, dar este greu de
            identificat care. N este un întreg începând cu 1, și reprezintă numărul
           (cronologic) al apelului la funcția respectivă.
-x * --expand=* Expandează toate apelurile de funcții (vezi mai sus) -o --ommit-cycles Nu crează noduri <CYCLE> pentru buclele recursive

 

Scurt tutorial profiling:

  1. Se instalează XDEBUG: http://xdebug.org/docs/install
  2. Se instalează KCacheGrind
  3. Se configurează XDEBUG pentru a produce trace-uri XT: http://xdebug.org/docs/stack_trace
    ; Enable xdebug extension module
    zend_extension=/usr/lib/php/modules/xdebug.so
    
    xdebug.trace_enable_trigger=On
    xdebug.trace_format=1
    xdebug.trace_output_dir=/tmp
    xdebug.trace_output_name=trace.%s.%t
    
  4. Se generează un trace pentru scriptul de executat, prin invocarea cu parametrul XDEBUG_TRACE
    (ex. http://localhost/myScript.php?XDEBUG_TRACE )
  5. Se convertește fișierul XT rezultat în fișier cachegrind
  6. Se vizualizează cu KCacheGrind
   

 

Lăsați-ne un comentariu!

Dacă ați găsit acest conținut util sau dacă aveți întrebări sau probleme în folosirea lui, vă rugăm să lăsați un comentariu! Feedback-ul este valoros pentru proiectele noastre, deci vă garantăm că efortul dvs. va fi apreciat! Multumim!

(c) SC EXTEON SRL 2006-2009, Toate drepturile rezervate
Powered by   Web3 CMS