Есть ли способ улучшить производительность продукта boost ublas?
У меня есть две матрицы A, B, которые я хочу умножить / добавить / sub /...
В MATLAB vs. C ++ я получаю следующие значения [с] для операций с матрицами 2000x2000
OPERATION | MATLAB | C++ (MSVC10)
A + B | 0.04 | 0.04
A - B | 0.04 | 0.04
AB | 1.0 | 62.66
A'B' | 1.0 | 54.35
Почему здесь такая огромная потеря производительности?
Матрицы являются только действительными двойными числами.
Но мне также нужны положительно определенные, симметричные, прямоугольные произведения.
EDIT:
Код тривиален
matrix<double> A( 2000 , 2000 );
// Fill Matrix A
matrix<double> B = A;
C = A + B;
D = A - B;
E = prod(A,B);
F = prod(trans(A),trans(B));
РЕДАКТИРОВАТЬ 2:
Результаты представляют собой средние значения 10 попыток. Стандартное значение было меньше 0,005
Я бы ожидал, что коэффициент 2-3 может быть, но не 50 (!)
РЕДАКТИРОВАТЬ 3:
Все было исправлено в режиме выпуска (NDEBUG / MOVE_SEMANTICS / ..).
РЕДАКТИРОВАТЬ 4:
Предварительно выделенные матрицы для результатов продукта не влияли на время выполнения.