Rein als ein Experiment, schreibe ich Sortierfunktionen in MATLAB dann diese durch den MATLAB Profiler laufen. Der Aspekt, den ich am meisten verblüffend finde, ist der Austausch von Elementen.Leistung des Tauschens zweier Elemente in MATLAB
Ich habe festgestellt, dass der „offizielle“ Weg, um zwei Elemente von Austausch in einer Matrix
self.Data([i1, i2]) = self.Data([i2, i1])
läuft viel langsamer als es in vier Zeilen Code tun:
e1 = self.Data(i1);
e2 = self.Data(i2);
self.Data(i1) = e2;
self.Data(i2) = e1;
Die Gesamtlänge von Zeit, die von dem zweiten Beispiel belegt ist, ist 12 mal weniger als die einzelne Codezeile im ersten Beispiel.
Würde jemand eine Erklärung haben, warum?
Ich bin neugierig, warum OP nicht erwähnt hat. – Jeff