Мы вычисляем что-то, чье исполнение связано с матричными операциями. (Некоторые подробности ниже, если они заинтересованы.) Этот опыт вызвал следующий вопрос:
Есть ли у людей опыт работы с библиотеками Java для математической математики (например, умножить, инвертировать и т.д.)? Например:
Я искал и ничего не нашел.
Подробная информация о нашем сравнении скорости:
Мы используем Intel FORTRAN (IFORT) 10.1 20070913). Мы переопределили его на Java (1.6), используя матричные операционные системы Apache commons math 1.2, и он согласен со всеми его цифрами точности. (У нас есть причины для этого в Java.) (Java удваивает, Fortran real * 8). Fortran: 6 минут, Java 33 минуты, одна и та же машина. Профайлинг jvisualm показывает много времени, проведенного в RealMatrixImpl. {getEntry, isValidCoordinate} (которые, кажется, ушли в неизданный Apache commons math 2.0, но 2.0 не быстрее). Fortran использует процедуры Atlas BLAS (dpotrf и т.д.).
Очевидно, это может зависеть от нашего кода на каждом языке, но мы верим, что большая часть времени находится в эквивалентных матричных операциях.
В нескольких других вычислениях, которые не связаны с библиотеками, Java не была намного медленнее, а иногда и намного быстрее.