Obliczamy coś, czego czas wykonania jest ograniczony operacjami macierzowymi. (Niektóre szczegóły poniżej, jeśli są zainteresowane). To doświadczenie wywołało następujące pytanie:
Czy ludzie mają doświadczenie w wykonywaniu bibliotek Java dla matematyki macierzowej (np. Mnożenie, odwrotność itp.)? Na przykład:
Szukałem i nic nie znalazłem.
Szczegóły naszego porównania prędkości:
Używamy Intel FORTRAN (ifort (IFORT) 10.1 20070913). Ponownie zaimplementowaliśmy go w Javie (1.6) przy użyciu operacji macierzowych Apache commons math 1.2 i zgadza się na wszystkie cyfry dokładności. (Mamy powody, by chcieć tego w Javie.) (Java podwaja się, Fortran real * 8). Fortran: 6 minut, Java 33 minuty, ta sama maszyna. Profilowanie jvisualm pokazuje dużo czasu spędzonego w RealMatrixImpl. {getEntry, isValidCoordinate} (które wydają się znikać w niewydanej Apache commons Math 2.0, ale 2.0 nie jest szybsze). Fortran używa procedur Atlas BLAS (dpotrf itp.).
Oczywiście może to zależeć od naszego kodu w każdym języku, ale uważamy, że przez większość czasu wykonywane są równoważne operacje macierzowe.
W kilku innych obliczeniach, które nie obejmują bibliotek, Java nie była dużo wolniejsza, a czasami znacznie szybsza.