Dlaczego Octave jest wolniejszy niż MATLAB?

Używam Octave i MATLAB do kilku projektów i natknąłem się na kilka pytań. To pytanieDlaczego / kiedy powinienem preferować program MATLAB zamiast Octave?) odpowiedział kilka, ale wciąż jest jeden ...

Przeczytałem wiele postów / innych źródeł porównujących wydajność Octave i MATLAB, i przeprowadziłem kilka własnych testów na standardowych skryptach, które potwierdzają ogólny konsensus, że Octave jest na ogół znacznie wolniejszy niż MATLAB dla standardowych operacji (iterowany, oczywiście, aby porównanie miało sens).

Konsensus wydaje się również sugerować, że większość zwiększenia wydajności programu MATLAB można przypisać kompilatorowi JIT, który kompiluje duże pętle w czasie wykonywania. Ma to sens i wydaje się, że największe różnice wydajności występują w tych przypadkach (npMathworks Matlab vs Gnu Octave)

Moje pytanie brzmi następująco: dlaczego miałoby być tak, że wektoryzowany kod działa również wolniej w Octave? Wydaje się, że w tym przypadku pamięć powinna zostać odłożona na bok, zanim pętla i natywna pętla C / C ++ powinny wykonać operację, która utożsamiałaby wydajność między oktawą i MATLABEM dla kodu wektorowego. Dodatkowo, czy ma to szersze implikacje, tj. Że Octave może działać słabiej w przypadku złożonych operacji, nawet jeśli kod jest napisany tak, że kompilator JIT jest niepotrzebny / nieużywany?

questionAnswers(2)

yourAnswerToTheQuestion