2014-11-20 20 views
33

Ho saputo di flame graphs e li ho trovati affascinanti - tuttavia, non ho trovato alcun riferimento utile su come generarli per i miei script PHP. Come posso raccogliere i dati e generare i grafici usando PHP?Come generare grafici di fiamma con PHP?

+2

Brendan Gregg ha un [* molto da dire *] (http://www.brendangregg.com/FlameGraphs/cpuflamegraphs) sui grafici delle fiamme, se questo aiuta. Personalmente, secondo me sono sopravvalutati. Ti prendono in giro con pixel colorati, ma le cose che potresti risolvere per accelerare il codice [* possono facilmente nasconderle *] (http://stackoverflow.com/a/25870103/23771). –

+0

@MikeDunlavey: Anche a me non interessa nemmeno i pixel, ma non sono d'accordo con la tua valutazione dei grafici delle fiamme come se fossero dei dolcetti per gli occhi. Rendono * alcuni * (non tutti!) I compiti di profilazione molto più semplici, il che va bene per me. Quindi, sai come posso renderli per le applicazioni web PHP? :) – johndodo

+0

Se volessi realizzarli, raccoglierei molti campioni di stack (in tempo di wall-clock, non in CPU). Considerando ogni campione come una lunga stringa, vorrei semplicemente ordinarli in ordine lessicale. Quindi assegnare un colore a ogni singola funzione. Quindi è solo una questione di scansione attraverso l'elenco ordinato e il rendering di ogni routine come un rettangolo colorato. Il mio unico punto è, se hai effettivamente bisogno di velocità, se anche solo uno su cinque speedup sfugge alla tua attenzione, impedirà di ottenere la velocità desiderata con un fattore importante. Perché dopo aver eliminato gli altri, quelli che non diventano diventano dominanti. –

risposta

6

È possibile utilizzare Xdebug per creare profili di cachegrind del codice php. Puoi dare un'occhiata a this project che gestisce l'output cachegrind di xdebug usando php.

+1

Se ho capito bene, l'idea è di creare uno strumento che analizzi l'output di cachegrind e lo visualizzi nei grafici di fiamma? Sembra fattibile ... – johndodo

+0

Non sembra che ci sia uno strumento pronto all'uso costruito con PHP, ma forse kcachegrind può farlo ... – n00dl3

+0

e per rispondere alla tua domanda, sì, il gioco è fatto! – n00dl3

Problemi correlati