Newsgroup: it.comp.www.php
Titolo: WebGrind

Per la profilazione dei miei programmi ho sempre usato webgrind e mi ci trovavo bene, però il progetto è abbandonato da eoni e di conseguenza non è uscita la versione per php7.
Forse è giunto il momento di cambiare, voi cosa usate?


err... nulla :)
In PHP manco mai usato un debugger, se è per questo :/
 
Ciao!


Davvero molto male!
Grazie al profilatore individui i colli di bottiglia, le funzioni lente sia tue che di php e riesci a migliorare il tuo codice perché i dati che ricevi sono al netto del web server, ma non del rdbms e questo è bene le query le fai tu e anche loro sono passibili di miglioramenti. I benefeci sono immensi, lo script veloce scala meglio eccetera eccetera... ...non devo certo spiegarlo a te.
 
Certo di averti convertito alla luminosa via della profilazione sono convinto che passerai le tue meritate ferie alla febbrile ricerca di un buon profilatore, nella remota possibilità che non sia così: buone vacanze.
 
 


 
Buone vacanze anche a te! :)
 
Ciao!

 parte del tempo si perde comunque sulle query (che controllo in altri modi)
 
come e che altri consigli x performance in generale?


Per quanto riguarda le query è facile: ogni DB ti mette a disposizione gli
strumenti per chiedere come l'optimizer procede su una query (nel caso di
MySQL c'è "describe"). Quando non sei sicuro di aver scritto a modo una
query d'estrazione chiedi e in caso aggiungi indici o riscrivi in altro modo
per far capire cosa avevi in mente (o, se proprio non puoi, cosa che però
in pratica avviene quasi mai, aggiungi una view o attivi la query cache).
 
Per quanto riguarda il PHP, beh.. E' una cosa d'atteggiamento, credo.
Primissima cosa, lo sviluppo web è, nel 90% dei casi, operazioni su stringhe.
In PHP vedi cosa l'utente ha chiesto, tiri fuori i dati dal DB, stampi
l'output; non hai mai una complessità ciclomatica superiore a 2, e qualsiasi
algoritmo, ache il più sbagliato che ti può venire in mente, non correrà mai
in O(n^2). Una pagina verrà sempre renderizzata in una manciata di
millisecondi.
Se ti trovi in uno di quei casi dove superi il mezzo secondo (e li vorrei
tanto vedere questi casi, perché di solito è solo frutto di cappellate
madornali nell'architettura) basta che attivi un meccanismo di cache.
Per quanto riguarda qualsiasi altra funzione che prende tempo intrinsecamente,
come parlare con servizi esterni (in REST, SOAP o quant'altro), non vanno mai
fatti durante il rendering, li metti in crojob o una richiesta AJAX (e se il
webserver non ce la fa metti queste richieste pesanti su un altro server).
 
A stringere, finché non si hanno problemi non si profila e non si ottimizza.
Quando si hanno problemi, già si sa dove sono.
 
Ciao!

in O(n^2).
 
Io lavoro col restante 10%, mi sa :-)
 
Leonardo
-- 
 
A terrible beauty is born.
                                     - W. B. Yeats, Easter 1916


 
Conoscendo quello che scrivi qui probabile, ma descrivi allora please, ora son
curioso! ;)
 
Tieni anche conto che pure io non è che normalmente lavoro sulla parte di
backend relativa al supporto del frontend, ma mettendo insieme le ore lavoro
complessive sul progetto la percentuale è abbastanza azzeccata :)
 
Ciao!

backend relativa al supporto del frontend
 
ahhh scusa. Avevo capito male io. Mi riferivo in effetti al backend :-)
 
Sul frontend, credo di oscillare fra O(1) e O(n).
 
(Deo gratias :-) )


 Forse è giunto il momento di cambiare, voi cosa usate?
 
Tempo fa ho profilato con Xhprof, devo dire che ha fatto il suo sporco
lavoro.
 
-- 
g4b0, linux user n. 369000
http://brosulo.net
 


Grazie.
Mi sembra più potente di webgrind che non mostrava il consumo di memoria.
Vedo che è per php5, lo hai usato col 7?


No, con il 5. Ho debuggato un cms con problemi di memory leak ed é stato
davvero utile.
