私はいくつかのプロジェクトで Octave と MATLAB を使用してきましたが、いくつかの質問に遭遇しました。この質問なぜ/いつ、Octave よりも MATLAB を優先する必要がありますか? ) いくつか答えましたが、まだ 1 つ残っています...
私は、Octave と MATLAB のパフォーマンスを比較する多くの投稿/その他の情報源を読みました。また、Octave は一般に、標準操作で MATLAB よりもはるかに遅いという一般的なコンセンサスを確認する標準スクリプトで独自のテストをいくつか実行しました (繰り返し、もちろん、比較が意味を持つように)。
コンセンサスは、MATLAB のパフォーマンス向上のほとんどが、実行時に大きなループをコンパイルする JIT コンパイラに起因することも示唆しているようです。これは理にかなっており、これらの場合に最大のパフォーマンスの違いが発生するようです (例: Mathworks Matlab と Gnu Octave ) 。
私の質問は次のとおりです。ベクトル化されたコードも Octave でより遅く実行されるのはなぜですか? この場合、ループの前にメモリを確保し、一部のネイティブ C/C++ ループで操作を実行する必要があるようです。これにより、ベクトル化されたコードのパフォーマンスが Octave と MATLAB と同等になります。さらに、これはより広い意味を持ちますか、つまり、JIT コンパイラが不要/使用されないようにコードが書かれていても、Octave は複雑な操作に対してパフォーマンスが低下する可能性がありますか?