Recentemente ho profila un codice MATLAB e sono stato scioccato nel vedere quanto segue in una funzione molto utilizzato:sull'andamento di variabili persistenti in MATLAB
5.76 198694 58 persistent CONSTANTS;
3.44 198694 59 if isempty(CONSTANTS) % initialize CONSTANTS
In altre parole, MATLAB speso circa 9 secondi, oltre 198.694 la funzione chiama, dichiarando il persistente CONSTANTS
e controllando se è stato inizializzato. Questo rappresenta 13% del tempo totale trascorso in quella funzione.
Le variabili persistenti portano davvero molto di una penalizzazione delle prestazioni in MATLAB? O stiamo facendo qualcosa di terribilmente sbagliato qui?
UPDATE
@Andrew Ho cercato il tuo script di esempio e sono molto, molto perplesso l'output:
time calls line
6 function has_persistent
6.48 200000 7 persistent CONSTANTS
1.91 200000 8 if isempty(CONSTANTS)
9 CONSTANTS = 42;
10 end
ho provato il comando banco() ed ha mostrato la mia macchina nel gamma media delle macchine campione. Esecuzione di Ubuntu 64 bit su una CPU i7 Intel (R) Core (TM), 4 GB di RAM.
Quale versione di Matlab è in esecuzione? – mtrw
MATLAB versione 7.10.0.499 (R2010a) – lindelof