Ми обчислюємо щось, час виконання якого пов'язаний матричними операціями. (Деякі деталі нижче, якщо вас цікавить.) Цей досвід викликав наступне питання:
Чи має народ у досвіді роботи бібліотек Java для математики матриці (наприклад, множення, обернення тощо)? Наприклад:
Я шукав і нічого не знаходив.
Деталі нашого порівняння швидкості:
Ми використовуємо Intel FORTRAN (ifort (IFORT) 10.1 20070913). Ми повторно застосували його в Java (1.6), використовуючи Apache Commons math 1.2 matrix ops, і він погоджується на всі його цифри точності. (У нас є причини, щоб цього бажати на Java.) (Java подвоюється, Fortran real * 8). Фортран: 6 хвилин, Java 33 хвилини, така ж машина. Профілювання jvisualm показує багато часу, витраченого на RealMatrixImpl. {getEntry, isValidCoordinate} (які, схоже, відсутній у невипущеній версії Apache з математикою 2.0, але 2.0 не швидше). Fortran використовує Atlas BLAS підпрограми (dpotrf тощо).
Очевидно, це може залежати від нашого коду на кожній мові, але ми вважаємо, що більшість часу відбувається в еквівалентних операціях з матрицею.
У кількох інших обчисленнях, які не включають бібліотеки, Java не була набагато повільнішою, а іноді і значно швидшою.