Wir berechnen etwas, dessen Laufzeit durch Matrixoperationen gebunden ist. (Einige Details unten, falls interessiert.) Diese Erfahrung warf die folgende Frage auf:
Haben die Leute Erfahrung mit der Leistung von Java-Bibliotheken für die Matrixmathematik (z. B. Multiplizieren, Inversieren usw.)? Beispielsweise:
Ich habe gesucht und nichts gefunden.
Details unseres Geschwindigkeitsvergleichs:
Wir verwenden Intel FORTRAN (ifort (IFORT) 10.1 20070913). Wir haben es in Java (1.6) mit Apache Commons Math 1.2 Matrix Ops neu implementiert und es stimmt mit allen Ziffern der Genauigkeit überein. (Wir haben Gründe, es in Java zu wollen.) (Java verdoppelt sich, Fortran real * 8). Fortran: 6 Minuten, Java 33 Minuten, dieselbe Maschine. Die jvisualm-Profilerstellung zeigt viel Zeit in RealMatrixImpl. {getEntry, isValidCoordinate} (die in unveröffentlichtem Apache Commons Math 2.0 verschwunden zu sein scheint, aber 2.0 ist nicht schneller). Fortran verwendet Atlas BLAS-Routinen (dpotrf usw.).
Natürlich könnte dies von unserem Code in jeder Sprache abhängen, aber wir glauben, dass die meiste Zeit in äquivalenten Matrixoperationen liegt.
Bei mehreren anderen Berechnungen, an denen keine Bibliotheken beteiligt sind, war Java nicht viel langsamer und manchmal auch viel schneller.