appena imbattuto in questo annuncio e ho pensato di buttare i miei due centesimi in. Io sono autore di EJML e sto anche lavorando su un benchmark delle prestazioni e la stabilità per le librerie Java. Mentre diversi problemi determinano la velocità di un algoritmo, Mikhail è corretto sul fatto che il caching è un problema molto importante nelle prestazioni delle grandi matrici. Per le matrici più piccole, le librerie in testa diventano più importanti.
A causa di sovraccarico nell'accesso agli array, le librerie Java pure sono più lente delle librerie c altamente ottimizzate, anche se gli algoritmi sono esattamente gli stessi. Alcune librerie aggirano questo problema effettuando chiamate al codice nativo. Si potrebbe voler controllare
http://code.google.com/p/matrix-toolkits-java/
che fa esattamente questo. Ci sarà un sovraccarico nel copiare la memoria da java alla libreria nativa, ma per le matrici di grandi dimensioni questo è insignificante.
Per un benchmark sulle prestazioni di Java puro (quello che sto lavorando a) controllare:
http://code.google.com/p/java-matrix-benchmark/
Un altro punto di riferimento è qui:
http://www.ujmp.org/java-matrix/benchmark/
Uno di questi i benchmark dovrebbero darti una buona idea delle prestazioni per le matrici di grandi dimensioni.
fonte
2010-01-21 16:44:07
Non si può davvero confrontare il ciclo matlab con java loop, java è molto più veloce. Senza dubbio, il loop java è ancora più lento della speciale libreria matematica scritta in C. Ma sei sicuro che la tua più grande inefficienza sia nelle operazioni con le matrici? Dalla mia esperienza per le stesse applicazioni portate su Java da MATLAB, con matrici di medie dimensioni e senza inversione di matrice, la performance cumulativa è simile.Certo, perdiamo le prestazioni sulla moltiplicazione/addizione della matrice, ma otteniamo prestazioni su tutto il resto, come il dispatch del metodo e la gui. – Mikhail
Ecco un elenco di funzioni Matlab e il loro equivalente in EJML http://code.google.com/p/efficient-java-matrix-library/wiki/MatlabFunctions. La maggior parte sono conversioni molto semplici. –