Sono abbastanza impressionato dalla libreria C++ Eigen che utilizza modelli di espressioni per ottenere un'enorme velocità nel calcolo di matrice/vettore.Scala LMS per scrivere algebra lineare Lib
Vorrei clonare questa libreria in scala. Per quanto ne so, il sistema di tipo scalas non è abbastanza potente per fare qualcosa del genere, ma dovrebbe essere possibile la LMS modulare leggera. Sembra che ci siano diversi progetti là fuori (Delight, virtualizzazione-lms, ecc.). Quale sarebbe il diritto di utilizzare per questo tipo di progetto in termini di affidabilità e prestazioni?
Grazie
Edit: Ho appena incontrato macro in scala 2.10. Forse questo è quello che voglio usare qui.
@ om-nom-nom
La parte importante è spiegato in http://eigen.tuxfamily.org/dox/TopicInsideEigenExample.html
L'esempio spiega che un vettore aggiunta
u = v + w
possiede buone prestazioni in (nativo) C++ poiché un la variabile temporanea viene creata per l'aggiunta e questa variabile è assegnata a te come
for(int i = 0; i < size; i++) tmp[i] = v[i] + w[i];
for(int i = 0; i < size; i++) u[i] = tmp[i];
Eigen utilizza template metaprogrammazione (passo spiegato passo nel link qui sopra) per ridurre questo al momento della compilazione di
for(int i = 0; i < size; i++) u[i] = v[i] + w[i];
che è ovviamente più veloce e non ha bisogno di una variabile in più.
Potrebbe essere d'aiuto, se si descrive brevemente il meccanismo dei modelli di espressione. –