Estamos computando algo cujo tempo de execução é limitado pelas operações da matriz. (Alguns detalhes abaixo, se estiver interessado.) Essa experiência levou à seguinte pergunta:
As pessoas têm experiência com o desempenho de bibliotecas Java para matemática matricial (por exemplo, multiplicar, inversa, etc.)? Por exemplo:
Eu procurei e não encontrei nada.
Detalhes da nossa comparação de velocidade:
Estamos usando o Intel FORTRAN (ifort (IFORT) 10.1 20070913). Nós o reimplementamos em Java (1.6) usando operações matemáticas da matriz 1.2 do Apache commons, e ele concorda com todos os seus dígitos de precisão. (Temos razões para querer isso em Java.) (Java dobra, Fortran real * 8). Fortran: 6 minutos, Java 33 minutos, mesma máquina. O perfil do jvisualm mostra muito tempo gasto no RealMatrixImpl. {getEntry, isValidCoordinate} (que parece ter desaparecido no Apache commons math 2.0 não lançado, mas o 2.0 não é mais rápido). O Fortran está usando as rotinas Atlas BLAS (dpotrf, etc.).
Obviamente, isso pode depender do nosso código em cada idioma, mas acreditamos que na maioria das vezes esteja em operações matriciais equivalentes.
Em vários outros cálculos que não envolvem bibliotecas, o Java não foi muito mais lento e, às vezes, muito mais rápido.