Récemment, je profile un code Matlab et j'ai été choqué de voir ce qui suit dans une fonction très utilisée:pénalité de performance des variables persistantes dans Matlab
5.76 198694 58 persistent CONSTANTS;
3.44 198694 59 if isempty(CONSTANTS) % initialize CONSTANTS
En d'autres termes, Matlab a passé environ 9 secondes, sur 198694 fonction appels, en déclarant le CONSTANTS
persistant et en vérifiant s'il a été initialisé. Cela représente 13% du temps total passé dans cette fonction.
Est-ce que les variables persistantes sont vraiment pénalisées par les performances dans MATLAB? Ou faisons-nous quelque chose de terriblement mal ici?
MISE À JOUR
@ Andrew J'ai essayé votre exemple de script et je suis très, très perplexe face à la sortie:
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
J'ai essayé la commande banc() et il a montré ma machine dans la milieu de gamme des machines d'échantillonnage. Exécution d'Ubuntu 64 bits sur un processeur Intel (R) Core (TM) i7, 4 Go de RAM.
Quelle version de Matlab utilisez-vous? – mtrw
MATLAB Version 7.10.0.499 (R2010a) – lindelof