1*bf2c3715SXin Li // g++ -O3 -DNDEBUG benchmarkX.cpp -o benchmarkX && time ./benchmarkX 2*bf2c3715SXin Li 3*bf2c3715SXin Li #include <iostream> 4*bf2c3715SXin Li #include <Eigen/Core> 5*bf2c3715SXin Li 6*bf2c3715SXin Li using namespace std; 7*bf2c3715SXin Li using namespace Eigen; 8*bf2c3715SXin Li 9*bf2c3715SXin Li #ifndef VECTYPE 10*bf2c3715SXin Li #define VECTYPE VectorXLd 11*bf2c3715SXin Li #endif 12*bf2c3715SXin Li 13*bf2c3715SXin Li #ifndef VECSIZE 14*bf2c3715SXin Li #define VECSIZE 1000000 15*bf2c3715SXin Li #endif 16*bf2c3715SXin Li 17*bf2c3715SXin Li #ifndef REPEAT 18*bf2c3715SXin Li #define REPEAT 1000 19*bf2c3715SXin Li #endif 20*bf2c3715SXin Li main(int argc,char * argv[])21*bf2c3715SXin Liint main(int argc, char *argv[]) 22*bf2c3715SXin Li { 23*bf2c3715SXin Li VECTYPE I = VECTYPE::Ones(VECSIZE); 24*bf2c3715SXin Li VECTYPE m(VECSIZE,1); 25*bf2c3715SXin Li for(int i = 0; i < VECSIZE; i++) 26*bf2c3715SXin Li { 27*bf2c3715SXin Li m[i] = 0.1 * i/VECSIZE; 28*bf2c3715SXin Li } 29*bf2c3715SXin Li for(int a = 0; a < REPEAT; a++) 30*bf2c3715SXin Li { 31*bf2c3715SXin Li m = VECTYPE::Ones(VECSIZE) + 0.00005 * (m.cwise().square() + m/4); 32*bf2c3715SXin Li } 33*bf2c3715SXin Li cout << m[0] << endl; 34*bf2c3715SXin Li return 0; 35*bf2c3715SXin Li } 36