Benchmarking

Sono disponibili alcuni tool per il benchmarking delle applicazioni. Potete utilizzare la classe Stats e la classe PerformanceTest, sviluppate dai membri della comunità Flash. Oppure, potete usare il profiler in Adobe® Flash® Builder™, e il tool FlexPMD.

La classe Stats

Per eseguire il profiling del codice in fase di runtime utilizzando la versione release del runtime, senza tool esterni, potete ricorrere alla classe Stats sviluppata da mr. doob della comunità Flash. Potete scaricare la classe Stats all'indirizzo seguente: https://github.com/mrdoob/Hi-ReS-Stats .

La classe Stats permette di tenere traccia dei seguenti aspetti:
  • I fotogrammi al secondo di cui viene eseguito il rendering (più elevato è il numero, migliore è il risultato)

  • I millisecondi utilizzati per il rendering di un fotogramma (più basso è il numero, migliore è il risultato)

  • La quantità di memoria utilizzata dal codice. Se aumenta per ciascun fotogramma, è possibile che l'applicazione presenti una perdita di memoria. È importare verificare questo potenziale problema.

  • La quantità massima di memoria utilizzata dall'applicazione.

Una volta scaricata, la classe Stats può essere utilizzata con il seguente codice compatto:

import net.hires.debug.*; 
addChild( new Stats() );

Utilizzando la compilazione condizionale in Adobe® Flash® Professional o Flash Builder, potete abilitare l'oggetto Stats:

CONFIG::DEBUG 
{ 
    import net.hires.debug.*; 
    addChild( new Stats() ); 
}

Commutando il valore della costante DEBUG , potete abilitare o disabilitare la compilazione dell'oggetto Stats. Lo stesso approccio può essere adottato per sostituire la logica del codice che non volete sia compilata nell'applicazione.

La classe PerformanceTest

Per il profiling dell'esecuzione del codice ActionScript, Grant Skinner ha sviluppato un tool che può essere integrato nel flusso di lavoro di testing di un'unità. Viene passata una classe personalizzata alla classe PerformanceTest, che esegue una serie di test sul codice. La classe PerformanceTest permette di effettuare con facilità il benchmarking di più approcci diversi. La classe PerformanceTest può essere scaricata dall'indirizzo seguente: http://www.gskinner.com/blog/archives/2009/04/as3_performance.html .

Il profiler di Flash Builder

Flash Builder viene fornito con un profiler che consente di eseguire il benchmarking del codice con un maggior livello di dettaglio.

Nota: utilizzate la versione debugger di Flash Player per accedere al profiler, altrimenti verrà visualizzato un messaggio di errore.

Il profiler può essere utilizzato anche con i contenuti creati in Adobe Flash Professional. A questo scopo, caricate il file SWF compilato da un progetto ActionScript o Flex in Flash Builder, quindi potrete eseguire il profiler sul progetto caricato. Per ulteriori informazioni sul profiler, vedete "Profiling Flex applications" in Using Flash Builder 4 .

FlexPMD

Adobe Technical Services ha rilasciato un tool chiamato FlexPMD che consente di verificare la qualità del codice ActionScript 3.0. FlexPMD è un tool ActionScript simile a JavaPMD. Permette di migliorare la qualità del codice verificando una directory di origine ActionScript 3.0 o Flex. È in grado di rilevare le imperfezioni del codice, ad esempio parti di codice inutilizzate, codice troppo complesso o troppo lungo e uso non corretto del ciclo di vita dei componenti Flex.

FlexPMD è un progetto open-source Adobe disponibile al seguente indirizzo: http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD . È anche disponibile un plugin Eclipse al seguente indirizzo: http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD+Eclipse+plugin .

FlexPMD facilita la verifica del codice e vi permette di ottenere un codice sempre "pulito" e ottimizzato. La vera forza di FlexPMD è nella sua estensibilità. Ogni sviluppatore può infatti creare dei propri set di regole da seguire per la verifica di qualunque codice. Ad esempio, potete creare un set di regole per rilevare un uso eccessivo di filtri, o qualunque altro esempio di uso non corretto del codice abbiate bisogno di individuare.