Производительность JAMA Matrix

Прежде всего, извините за мой плохой английский, но мне нужна ваша помощь.

Я разработал программу моделирования с использованием Java Swing, где я использовал множество матричных вычислений. Моя программа только что закончилась, но мне нужно ускорить мою работу. Поэтому я использовал java visual vm profiler для выявления проблем с производительностью. Я понял, что для инициализации Jama Matrix нужно много времени. После запуска моей программы у меня было более 3 МБ выделенных объектов JAMA. Это много, не правда ли? Я думаю, именно поэтому производительность плохая.

Есть ли лучшая библиотека, чем jama для матриц? Я использую матрицы 3х3, и мне нужно умножение и обратные операции, или я могу еще что-нибудь сделать?

1 ответ

Обычно математические математические библиотеки не оптимизированы для скорости на маленьких матрицах. Вы можете убедиться в этом сами, сделав несколько стековых снимков, которые могут показывать большую долю времени в таких служебных функциях, как распределение памяти и проверка параметров.

Вместо этого вы можете сделать (что я сделал) написать специальные процедуры для умножения и инверсии, поскольку вы знаете, что матрицы имеют размер 3x3. Умножение тривиально, и вы можете развернуть все это.

Инверсию матрицы 3х3 можно также выполнить с меньшим количеством кода, чем кофе:) Википедия дает вам формулу.

Что бы вы ни делали, постарайтесь минимизировать выделение памяти.

Другие вопросы по тегам