Stiamo calcolando qualcosa il cui runtime è vincolato da operazioni a matrice. (Alcuni dettagli di seguito, se interessati). Questa esperienza ha posto la seguente domanda:
La gente ha esperienza con le prestazioni delle librerie Java per la matematica a matrice (ad esempio, moltiplicare, inverso, ecc.)? Per esempio:
Ho cercato e non ho trovato nulla.
Dettagli del nostro confronto di velocità:
Stiamo utilizzando Intel FORTRAN (ifort (IFORT) 10.1 20070913). Lo abbiamo reimplementato in Java (1.6) usando le operazioni di matrice matematica 1.2 di comuni di Apache e accetta tutte le sue cifre di precisione. (Abbiamo motivi per volerlo in Java.) (Java raddoppia, Fortran reale * 8). Fortran: 6 minuti, Java 33 minuti, stessa macchina. La profilazione di jvisualm mostra molto tempo trascorso in RealMatrixImpl. {getEntry, isValidCoordinate} (che sembra essere sparito in Apache inediti in comune 2.0, ma 2.0 non è più veloce). Fortran sta usando le routine Atlas BLAS (dpotrf, ecc.).
Ovviamente questo potrebbe dipendere dal nostro codice in ogni lingua, ma crediamo che la maggior parte delle volte sia in operazioni con matrici equivalenti.
In molti altri calcoli che non coinvolgono le librerie, Java non è stato molto più lento e talvolta molto più veloce.