Hi, i am not sure about how to improve the speed for your product (maybe defining a specialized axpy_prod), however the times you are speaking about are far too low for any comparison. Try to run the same example but so to have a total time of at least 1sec (better 10secs)
greetings
Riccardo
On Wed, 16 Aug 2006 16:18:05 -0300, Fred wrote
> Hi,
>
> Could you help to decrease time of prod when I use the typedef defined in the code below?
>
>
#include <boost/timer.hpp>I don't understand why prod spends "0 sec" in some iterations and " 0.016 sec" (in my computer) if variables are always the same...
> #include <boost/numeric/ublas/matrix.hpp>
> #include <boost/numeric/ublas/matrix_sparse.hpp>
> #include <boost/numeric/ublas/matrix_proxy.hpp>
> #include <boost/numeric/ublas/vector_sparse.hpp>
> #include <boost/numeric/ublas/vector_proxy.hpp>
> #include <boost/numeric/ublas/vector_of_vector.hpp>
> #include <boost/numeric/ublas/operation.hpp>
> #include <boost/numeric/ublas/io.hpp>
>
> int main () {
> using namespace boost::numeric::ublas;
>
> typedef generalized_vector_of_vector< double, row_major,
> boost::numeric::ublas::vector< compressed_vector<double> > > matrix;
> typedef compressed_vector<double> vec_d;
>
> // typedef matrix<double> matrix;
> // typedef vector<double> vec_d;
>
> boost::timer t1;
> double t_final;
>
> matrix m(3,3);
> vec_d v(3);
> vec_d result;
> for (unsigned i = 0; i < std::min (m.size1 (), v.size ()); ++ i) {
> for (unsigned j = 0; j < m.size2 (); ++ j)
> m (i, j) = 3 * i + j;
> v (i) = i;
> }
>
> std::cout << m << std::endl;
> std::cout << v << std::endl;
>
> int counter = 0;
> for(int n=0; n<20 ; ++n)
> {
> for(int i=0; i<200 ; ++i)
> {
> t1.restart();
> result = prod(m, v);
> t_final = t1.elapsed();
>
> if (t_final > 0.01)
> {
> std::cout << "time = " << t_final << std::endl;
> counter++;
> }
> }
> }
> std::cout << "counter = " << counter << std::endl;
> }
>