View Single Post
Old 08-03-2009, 23:40   #7
ciccio_g
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 14
Quote:
Originariamente inviato da cionci Guarda i messaggi
Attenzione perché per funzioni complesse è molto più importante usare un algoritmo allo stato dell'arte che usare un linguaggio che ti permette di ottenere un codice molto performante.
Mi spiego: se devi lavorare con una matrice 100x100 e l'algoritmo implementato in Matlab ha complessità O(n log n), mentre il tuo ha complessità O(n^2), è possibile che tu abbia anch eun peggioramento.
Quindi è sì improtante usare un linguaggio che abbia buone prestazioni, ma è ancora più importante usare un algoritmo e strutture dati allo stato dell'arte.
Tale considerazione è giustissima, poichè se un algoritmo ha una complessità più bassa, anche implementandolo in un codice pessimo, che impiega molto più tempo per fare la singola operazione, al tendere di n all'infinito impiegherà comunque un tempo infinitamente più basso. Per questo motivo nella mia domanda facevo riferimento alle milgiori librerie (dal punto di vista di efficienza dell'algoritmo) che si trovano in rete per il calcolo lineare in c o in fortran, dando in qualche modo per scontato che anche matlab essendo un software di calcolo implementi l'algoritmo ottimo. Per tagliare la testa al toro riformulo la domanda:
Ipotizziamo che la funzione linsolve utilizzi l'algoritmo più efficiente per risolvere i sistemi lineari e consideriamo una libreria in fortran che si basi sullo stesso algoritmo: chi dei due è più veloce?
PS: è ovvio che se uno sciagurato anzichè utilizzare linsolve implementasse in un m file l'algoritmo in esame otterrebbe una funzione molto più lenta (anche se con la stessa complessità) dei codici di basso livello...
ciccio_g è offline   Rispondi citando il messaggio o parte di esso