Ho utilizzato Octave e MATLAB per alcuni progetti e ho trovato alcune domande. Questa domanda Why/when should I prefer MATLAB over Octave? ha risposto diversi, ma ce n'è ancora uno ...Perché Octave è più lento di MATLAB?
Ho letto un numero di post/altre fonti che confrontano le prestazioni di Octave e MATLAB e ho eseguito alcuni dei miei test su standard script che confermano il consenso generale sul fatto che Octave è generalmente molto più lento di MATLAB per le operazioni standard (ovviamente iterato, in modo che il confronto sia significativo).
Il consenso sembra anche suggerire che la maggior parte delle prestazioni di MATLAB sono attribuibili al compilatore JIT, che compila grandi loop in fase di esecuzione. Questo ha senso, e le maggiori differenze di prestazioni sembrano verificarsi in questi casi (ad esempio Mathworks Matlab vs Gnu Octave)
La mia domanda è la seguente: perché dovrebbe essere il caso che il codice vettoriale sia eseguito più lentamente in Octave? Sembra che in questo caso la memoria dovrebbe essere messa da parte prima del ciclo e qualche ciclo C/C++ nativo dovrebbe eseguire l'operazione, il che equivale a prestazioni tra Octave e MATLAB per il codice vettoriale. Inoltre, questo ha implicazioni più ampie, ad esempio che Octave potrebbe funzionare in modo peggiore per operazioni complesse, anche se il codice è scritto in modo tale che un compilatore JIT non è necessario/inutilizzato?
È stato scritto molto sul miglioramento delle prestazioni del JIT di Matlab, il JIT di Matlab non è in grado di effettuare chiamate in linea e sono incerto su come ottimizzare i loop FOR in base agli odds differenziali di prestazioni tra un ciclo FOR in Matlab e JAVA (che ha un JIT funzionante). Tutte le implementazioni di linguaggi interpretati hanno un JIT, ma Matlab's è piuttosto debole. – Mikhail