This is an old revision of the document!
Table of Contents
Una volta ottenuti i file di profilazione (ipotizzando che abbiano come estensione `.prof` ), è possibile produrre dei file file di testo da questi eseguendo:
* for i in `ls /path/to/profs/*.prof` ; python manage.py profiled_code $i 20 > `basename $i .prof`.txt; done
GUIDA DI PROFILAZIONE SU DJANGO
premessa: questa guida prevedede che dei file di profilazione siano stati preventivamente creati e che questi risultati vengano analizzati. Una buona libreria python per la profilazione è hotshot.
Noi abbiamo scelto di profilare partendo dalle viste django, in quanto entry-point per l'utente finale, dato che lo scopo è di migliorare l'esperienza utente. Il workflow riportato è comunque applicabile a qualsiasi profilazione.
* for i in `ls -1 /path/to/txt/files/*.txt` ; do printf “%s (Total Time) Profiling file: %s\n” `head -1 $i | awk '{print $8}'` `basename $i` » profiling_stats.txt; done * sort -rn profiling_stats.txt -o profiling_stats.txt (mette in ordine decrescente i tempi)
WORKFLOW GENERALE
Qui si riporta il workflow da seguire una volta localizzate le parti del software che richidono un analisi.
- Guardare: in questa fase si sceglie la profilazione che interessa (di solito quella che riporta un tempo maggiore) e si identifica la funzione (vista, funzione, ecc.) da cui è stata prodotta.
- Riprodurre: in questa fase si riproduce in locale lo stato dell'installazione, compresi i dati, in modo da verificare la corrispondenza tra il comportamento monitorato dalla profilazione e quello effettivo.
- Misurare: Una volta riprodotto il problema provare un'ottimizzazione alla volta e per ognuna registrare l'eventuale aumento/decremnto delle performance.
CONSIGLI: Per l'ottimizzazione partire dagli indici del database ed eventualmente in seguito controllare l'eleganza del codice :)
NELLO SPECIFICO
Nel caso pratio del profiling di GasistaFelice si è scelto di profilare le viste, rispettivamente nelle installazioni sui server:
* `ordini.desmacerata.it`, in `/var/www/gf_desmc; * `gasistafelice.befair.it`, in
Guardare
Si è scelta la vista `insolutes_orders`, profilata in data 2014/05/15 per un tempo totale di 192.639 sec.
La vista puo essere relativa a tre
- Riprodurre:
- Misurare: