Вам нужно только манипулировать матрицами 4х4?Большинство библиотек линейной алгебры общего назначения были высоко оптимизированы для больших матриц с небольшим вниманием к меньшим.Одна из причин, по которой я написал EJML , заключалась в том, чтобы решить эту проблему и мотивировать других разработчиков оптимизировать работу с небольшими матрицами.EJML является самым быстрым для небольших матриц, но это возможно сделать лучше.
Если вам действительно нужна высокая производительность, я бы не стал использовать какие-либо из обычных подозреваемых и вместо этого катил бы ваш собственный узкоспециализированный код.Должна быть возможность побить библиотеки общего назначения в несколько раз.
Простой пример для матрицы 2x2:
public class Matrix2x2 {
double a11,a12,a21,a22;
}
public static void mult( Matrix2x2 a , Matrix2x2 b , Matrix2x2 c ) {
c.a11 = a.a11*b.a11 + a.12*b.a21;
c.a12 = a.a11*b.a12 + a.12*b.a22;
c.a21 = a.a21*b.a11 + a.22*b.a21;
c.a22 = a.a21*b.a12 + a.22*b.a22;
}
Примечание. Я не пытался скомпилировать этот код, это всего лишь пример.