Vor kurzem habe ich einige MATLAB-Code profiliert und ich war schockiert, die folgenden in einer stark frequentierten Funktion, um zu sehen:Leistungseinbuße von persistenten Variablen in MATLAB
5.76 198694 58 persistent CONSTANTS;
3.44 198694 59 if isempty(CONSTANTS) % initialize CONSTANTS
Mit anderen Worten, verbrachte MATLAB etwa 9 Sekunden über 198.694 Funktion Aufrufe, die persistente CONSTANTS
deklarieren und prüfen, ob es initialisiert wurde. Das entspricht 13% der Gesamtzeit in dieser Funktion verbracht.
Tragen persistente Variablen in MATLAB wirklich so viel Leistungseinbußen mit sich? Oder machen wir hier etwas schrecklich falsch?
UPDATE
@ Andrew ich Ihr Beispielskript versucht, und ich bin sehr, sehr verwirrt durch die Ausgabe:
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
ich von der Bank() Befehl versucht, und es zeigte meine Maschine in der mittlerer Bereich der Mustermaschinen. Ubuntu 64 Bit auf einer Intel® Core ™ i7 CPU, 4GB RAM.
Welche Version von Matlab laufen Sie? – mtrw
MATLAB Version 7.10.0.499 (R2010a) – lindelof