User Tools

Site Tools


profiling:django

This is an old revision of the document!


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:

profiling/django.1410522691.txt.gz · Last modified: 2014/10/28 11:28 (external edit)