Por que a oitava é mais lenta que o MATLAB?
Eu tenho usado o Octave e o MATLAB em alguns projetos, e me deparei com algumas perguntas. Essa questãoPor que / quando devo preferir o MATLAB ao Octave?) respondeu várias, mas ainda há uma persistente ...
Eu li uma série de posts / outras fontes comparando o desempenho do Octave e do MATLAB, e eu executei alguns dos meus próprios testes em scripts padrão que confirmam o consenso geral de que o Octave é geralmente muito mais lento que o MATLAB para operações padrão (iterado, claro, para que a comparação seja significativa).
O consenso também parece sugerir que a maior parte do aumento de desempenho do MATLAB é atribuível ao seu compilador JIT, que compila grandes loops em tempo de execução. Isso faz sentido, e as maiores diferenças de desempenho parecem ocorrer nesses casos (por exemplo,Mathworks Matlab vs Gnu Octave)
Minha pergunta é a seguinte: por que deveria ser o caso de que o código vetorizado também é executado mais lentamente no Octave? Parece que, neste caso, a memória deve ser posta de lado antes do loop e algum loop C / C ++ nativo deve executar a operação, o que equivaleria ao desempenho entre o Octave e o MATLAB para o código vetorizado. Além disso, isso tem implicações mais amplas, ou seja, o Octave pode ter um desempenho pior para operações complexas, mesmo se o código for escrito de tal forma que um compilador JIT seja desnecessário / não utilizado?