E' più veloce un programma in Fortran o in Matlab?
Salve a tutti.
Ho tradotto un programma da matlab a fortran con lo scopo di creare un programma più veloce. Ma alla fine mi sono accorto che il programma i Fortran 90 costrutito è più lento di quello in matlab?
Qualcuno sa dirmi a cosa può essere dovuto? O se è possibile che, in alcune applicazioni, il Fortran 90 sia più lento del matlab.
Nel mio caso il programma è pieno di array.
Ho tradotto un programma da matlab a fortran con lo scopo di creare un programma più veloce. Ma alla fine mi sono accorto che il programma i Fortran 90 costrutito è più lento di quello in matlab?
Qualcuno sa dirmi a cosa può essere dovuto? O se è possibile che, in alcune applicazioni, il Fortran 90 sia più lento del matlab.
Nel mio caso il programma è pieno di array.
Risposte
Ciao,
è un discorso troppo dipendente dal tipo di codice e strutture dati utilizzate; dall'archiettura, dal compilatore, e via dicendo. Poi "voloce" è un termine che ha il tempo che trova, puoi avere il miglior codice al mondo, ma se è illeggibile è inutilizzabile.
Fortran90 esistente da qualche decennio ha avuto modo di svilupparsi ed essere adattato a varie architettur.
Matlab è un linguaggio ad alto livello, può avare maggiori ottimizzazioni a tempo di compilazione.
Troppo vago il discorso per darti una risposta (lo si può fare anche con C/C++ e Java e si è a capo).
EDIT:
es. che può darti un'idea che un'ottimizzazione dipende dall'architettura, dal compilatore, e via dicendo, un post scritto da apatriarca sulla rappresentazione degli array (in Fortran): column-major o row-major
è un discorso troppo dipendente dal tipo di codice e strutture dati utilizzate; dall'archiettura, dal compilatore, e via dicendo. Poi "voloce" è un termine che ha il tempo che trova, puoi avere il miglior codice al mondo, ma se è illeggibile è inutilizzabile.
Fortran90 esistente da qualche decennio ha avuto modo di svilupparsi ed essere adattato a varie architettur.
Matlab è un linguaggio ad alto livello, può avare maggiori ottimizzazioni a tempo di compilazione.
Troppo vago il discorso per darti una risposta (lo si può fare anche con C/C++ e Java e si è a capo).
EDIT:
es. che può darti un'idea che un'ottimizzazione dipende dall'architettura, dal compilatore, e via dicendo, un post scritto da apatriarca sulla rappresentazione degli array (in Fortran): column-major o row-major
Quindi, in sostanza, secondo Lei, dipende dal tipo di programma? E quindi non è detto che il fortran90 è sempre più veloce (come tempi di calcolo) del matlab?
Prima di tutto matlab fa uso di librerie molto ottimizzate per fare le diverse operazioni matriciali. E' quindi semplicemente possibile che la tua implementazione delle diverse operazioni sia più lenta di quella utilizzata in matlab. La differenza di performance tra un programma matlab a uno fortran dipende da molti fattori, ma non è certamente sufficiente riscrivere il programma in fortran per vedere un aumento delle performance, anzi..
grazie apatriarca. é stato molto chiaro.