Hello all, I am trying to use the boost::ublas library in my code to speed up things, but I was a bit suspicious about the results. So I ran my own tests, and I found that ublas is not as fast as the C implementation, but is actually about twice slower (for my test, which are very limited). Please find the source file below. I am not very familiar with expression template. Am I doing something wrong? Are the results specific to this test? Thanks a lot. Alexis ////////// CODE #include <iostream> #include "boost/numeric/interval.hpp" #include "boost/numeric/interval/io.hpp" #include "boost/numeric/ublas/config.hpp" #include "boost/numeric/ublas/vector.hpp" #include "boost/numeric/ublas/matrix.hpp" #include "boost/numeric/ublas/vector_expression.hpp" #include "boost/numeric/ublas/io.hpp" #include "boost/timer.hpp" #include "boost/progress.hpp" namespace ublas = boost::numeric::ublas; typedef int value_type; #define N 14 typedef ublas::vector<value_type, ublas::bounded_array<value_type, N> > uBlasVector; #define K 100000000 int main(void) { int k=0; // standard C value_type c1[N]={0, 1, 2}, c2[N]={3, 4, 5}, cres[N]={0, 4, 10}; boost::timer timerC; for(k=0 ; k<K ; ++k) { for(int i=0 ; i<N ; ++i) { cres[i] = (c1[i] * c2[i]); } } std::cout << "c t=" << timerC.elapsed() << std::endl; // uBLAS uBlasVector v1(N), v2(N), res(N); boost::timer timerAssign3; for(k=0 ; k<K ; ++k) { res.assign(ublas::element_prod(v1,v2)); } std::cout << "assign prod t=" << timerAssign3.elapsed() << std::endl; return 0; } [Non-text portions of this message have been removed]