Durante lo sviluppo di un Software generalmente vengono eseguiti dei test di carico, di stress o di endurance.
Tutti questi test sono in grado di avvertire gli sviluppatori sulla presenza di un problema di performance, problema che può presentarsi sotto diverse forme:
- tempi di esecuzione peggiorati nel tempo
- timeout di processi o blocco dell’intero sistema in presenza di un determinato carico di utenti o dopo un certo periodo di tempo dallo start del sistema
Ma tali test non fanno altro che allertare che ad esempio il determinato processo X che ci si aspettava impiegasse N unità di tempo ne impiega invece più di N. Oppure avvertono che il sistema sotto test ha generato degli errori di timeout o si è bloccato totalmente o su alcuni processi.
Un tool di monitoring delle performance è uno strumento che ha l’obiettivo di monitorare le performance di un’entità tecnologica, che può essere ad esempio un’infrastruttura, un server, un’applicazione, una pagina web.
Se un programmatore volesse analizzare i tempi di esecuzione di un programma da lui scritto la prima e più semplice operazione che potrebbe fare sarebbe quella di inserire un’istruzione di calcolo dell’ora esatta (con una precisione fino ai millisecondi) all’inizio del suo programma, una di calcolo dell’ora esatta alla fine del programma e una di stampa nei log del tempo di esecuzione ottenuto come sottrazione del primo risultato dal secondo.
Dall’analisi dei log potrebbe estrarre statistiche sui tempi di esecuzione del metodo: quante volte viene eseguito, quanto tempo impiega in media, il suo minimo, il suo massimo, etc...
Tale tecnica viene chiamata profilazione del codice (in inglese conosciuto come "code profiling") ed è proprio il concetto che abbiamo esemplificato: al codice viene aggiunto codice per monitorarlo.