Contenuto principale

Misurazione della prestazione del codice

Panoramica sulle funzioni di temporizzazione delle prestazioni

La funzione timeit e le funzioni del cronometro tic e toc, consentono di misurare il tempo necessario per l'esecuzione del codice. Utilizzare la funzione timeit per una misurazione rigorosa del tempo di esecuzione della funzione. Utilizzare tic e toc per stimare il tempo necessario per porzioni di codice più piccole che non sono funzioni complete.

Per ulteriori dettagli sulla prestazione del codice, come le informazioni sulle chiamate di funzione e il tempo di esecuzione delle singole righe di codice, utilizzare MATLAB® Profiler. Per maggiori informazioni, vedere Profile Your Code to Improve Performance.

Funzioni temporali

Per misurare il tempo necessario per eseguire una funzione, utilizzare la funzione timeit. La funzione timeit chiama più volte la funzione specificata e restituisce la mediana delle misurazioni. Richiede un handle alla funzione da misurare e restituisce il tempo di esecuzione tipico, espresso in secondi. Si supponga di aver definito una funzione computeFunction, che accetta due input x e y, definiti nel workspace. È possibile calcolare il tempo necessario per eseguire la funzione utilizzando timeit.

f = @() myComputeFunction(x,y); % handle to function
timeit(f)

Porzioni temporali di codice

Per stimare il tempo necessario all'esecuzione di una parte del programma o per confrontare la velocità di diverse implementazioni di parti del programma, utilizzare le funzioni del cronometro tic e toc. Invocando tic si avvia il timer, mentre il successivo toc legge il tempo trascorso.

tic
   % The program section to time. 
toc

A volte i programmi vengono eseguiti troppo velocemente perché tic e toc possano fornire dati utili. Se il codice è più veloce di 1/10 di secondo, si consiglia di misurarlo in un loop e di calcolare poi la media per trovare il tempo di una singola esecuzione.

La funzione cputime rispetto a tic/toc e timeit

Si consiglia di utilizzare timeit o tic e toc per misurare la prestazione del codice. Queste funzioni restituiscono il tempo reale. A differenza di tic e toc, la funzione timeit chiama il codice più volte e tiene pertanto conto dei costi iniziali.

La funzione cputime misura il tempo totale della CPU e somma il tempo su tutti i thread. Questa misurazione è diversa dal tempo reale restituito da timeit o tic/toc e potrebbe risultare fuorviante. Ad esempio:

  • Il tempo della CPU per la funzione pause è generalmente breve, ma il tempo reale considera il tempo effettivo in cui l'esecuzione di MATLAB è sospesa. Pertanto, il tempo reale potrebbe essere più lungo.

  • Se la funzione utilizza in modo uniforme quattro basi di elaborazione, il tempo della CPU potrebbe essere circa quattro volte superiore al tempo reale.

Suggerimenti per la misurazione della prestazione

Quando si misurano le prestazioni del codice, tenere presenti i seguenti suggerimenti:

  • Misurare il tempo di una porzione di codice sufficientemente significativa. Idealmente, il codice che si sta cronometrando dovrebbe richiedere più di 1/10 di secondo per essere eseguito.

  • Inserire il codice che si desidera cronometrare in una funzione invece di cronometrarlo dalla riga di comando o all'interno di uno script.

  • A meno che non si stia cercando di misurare il costo iniziale, eseguire il codice più volte. Utilizzare la funzione timeit.

  • Evitare clear all durante la misurazione della prestazione. Per maggiori informazioni, vedere la funzione clear.

  • Assegnare l'output a una variabile invece di lasciarlo impostato su ans per impostazione predefinita.

Vedi anche

| | |

Argomenti