BOOST uBLAS producto de matriz extremadamente lento
Existe alguna manera de mejorar el rendimiento del producto ublas?
Tengo dos matrices A, B que quiero mulitply / add / sub /..
En MATLAB vs. C ++ obtengo los siguientes tiempos [s] para una matriz 2000x2000 Operaciones
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
¿Por qué hay una pérdida de rendimiento tan grande aquí?
Las matrices son solo dobles reales. Pero también necesito productos positivos definidos, simétricos y rectangulares.
EDIT: el código es trivial
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));
EDIT 2: Los resultados son valores medios de 10 intentos. El stddev fue inferior a 0.005
Esperaría un factor 2-3 tal vez pero no 50 (!)
EDIT 3: todo se realizó en el modo Release (NDEBUG / MOVE_SEMANTICS / ..).
EDIT 4: las matrices preasignadas para los resultados del producto no afectaron el tiempo de ejecución.