Quando si parla di performance il termine successivo è misurare, non basta infatti che il software "sembri" veloce, ma che anche i numeri lo confermino, avere degli strumenti adeguati diventa quindi essenziale per capire gli eventuali colli di bottiglia.
Le performance non sono solo importanti per migliorare la user experience, è abbastanza ovvio che un'applicazione che non risponde agli input, che crasha o sia lenta venga considerata una pessima app, ma sono fondamentali per superare i requisiti di pubblicazione nel Martetplace: ad esempio la nostra app deve renderizzare il primo schermo entro 5 secondi dalla partenza, deve rispondere al primo touch entro 20 secondi dallo startup e non deve risultare congelata per più di tre secondi senza mostrare progress bar o altri indicatori; questi sono solo alcuni dei requisiti, vi consigliamo di leggere i Technical Certification Requirements per maggiori dettagli sull'argomento.
Windows Phone Performance Analysis Tool
Il Windows Phone Performance Analysis Tool, è parte del Windows Phone SDK 7.1, ed è uno strumento in grado di misurare, analizzare e quindi migliorare le prestazioni delle nostre app; non è da sottovalutare il fatto che è integrato completamente all'interno di Visual Studio 2010. Consente di valutare i più importanti aspetti di un'applicazione Windows Phone: l'utilizzo della CPU, l'allocazione di memoria, il frame rate, il caricamento delle immagini, gli eventi del garbage collection e l'esecuzione di storyboard (animazioni).
Per iniziare a lavorare con questo strumento dobbiamo aprire da Visual Studio 2010 un'applicazione Windows Phone 7.x, nel nostro caso abbiamo usato l'app chiamata Kind Love (nome in codice LoveMeter) sviluppata dalla nostra società ThinkAhead. Dal menu Debug
scegliere Start Windows Phone Performance Analysis
.
Visual Studio 2010 creerà un file con estensione .sap
che conterrà tutte le informazioni catturate durante l'esecuzione, e mostrerà la prima schermata del wizard:
Nella maschera Performance Analsys Settings
abbiamo due scelte:
- Execution, utile per analizzare le prestazioni degli oggetti visuali e le chiamate ai metodi
- Memory, serve per analizzare l'allocazione degli oggetti e l'utilizzo di texture
A meno di non avere dei problemi sul fronte memoria, la classica scelta sarà Execution; possiamo anche espandere Advanced Settings per scegliere ad esempio se collezionare i dettagli della cache, performance counter dettagliati o gli eventi di oggetti media (immagini o video).
Cliccando Launch Application
verrà mostrata la seguente schermata del wizard:
A questo punto l'applicazione verrà eseguita sul device o nell'emulatore, in base alle nostre preferenze, e dovremo semplicemente utilizzarla.
Per interrompere la sessione di profilazione è sufficiente cliccare Stop Profiling
da Visual Studio 2010 oppure premere il pulsante Back
dal primo schermo applicativo. Lo strumento inizierà ad analizzare il log dei dati collezionati:
(clic per ingrandire)
Al completamento dell'attività di analisi lo strumento mostrerà il risultato della sessione di profilazione in una chiara timeline:
Windows Phone Performance Analysis è in grado di mostrare graficamente i seguenti aspetti:
Aspetto | Descrizione | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Frame Rate | Visualizza il numero di "screen redraw" in frame al secondo, questa informazione è disponibile solo in alcuni periodi della timeline, quando l'applicazione aggiorna lo screen | |||||||||||||||
CPU usage % | La percentuale di CPU in base al tipo di thread:
|
|||||||||||||||
Memory usage MB | Indica l'allocazione di memoria in megabyte | |||||||||||||||
Storyboards | Visualizza con un'icona con la lettera "S" l'evento di uno storyboard, tipicamente è l'inizio di un'animazione:
|
|||||||||||||||
Image loads | Visualizza con un'icona con la lettera "I" quando un'immagine viene caricata in memoria | |||||||||||||||
GC Events | Visualizza con un'icona con la lettera "G" un'attività del garbage collection |
Oltre a queste importantissime informazioni, mostrate in chiara forma grafica, è possibile ottenere maggiori dettagli e suggerimenti su come migliorare eventuali problemi, è sufficiente evidenziare con il mouse la regione di grafico interessata.
Nella tabella sottostante il grafico potremmo notare diverse righe che rappresentano delle segnalazioni di problemi (icona rossa), warning (icona gialle) o informazioni (icona bianca), nella cella Observation Summary sono contenute le indicazioni per proseguire nell'indagine dei problemi; questa funzionalità è veramente importante ed è, secondo noi, uno dei punti a favore di questo strumento anche a paragone con software di terze parti a pagamento, ricordiamo infatti che l'SDK è gratuito.
Seguendo le istruzioni, in questo caso, si arriva a visualizzare i metodi che utilizzano la maggior percentuale di CPU, lo strumento visualizza sia i metodi di nostra scrittura che quelli del runtime Silverlight.
Oltre a tali informazioni è possibile anche scegliere la visualizzazione per Frame, seguita dall'opzione Visual Tree, in questo caso lo strumento visualizza le informazioni relative al tempo di disegno di ogni oggetto presente nel Visual Tree per lo specifico frame (oltre ad altri prezioni dati), cliccando su un elemento si può saltare direttamente alla riga XAML che definisce tale oggetto.