1*bf2c3715SXin Li // g++ -O3 -DNDEBUG -DMATSIZE=<x> benchmark.cpp -o benchmark && time ./benchmark
2*bf2c3715SXin Li
3*bf2c3715SXin Li #include <iostream>
4*bf2c3715SXin Li
5*bf2c3715SXin Li #include <Eigen/Core>
6*bf2c3715SXin Li
7*bf2c3715SXin Li #ifndef MATSIZE
8*bf2c3715SXin Li #define MATSIZE 3
9*bf2c3715SXin Li #endif
10*bf2c3715SXin Li
11*bf2c3715SXin Li using namespace std;
12*bf2c3715SXin Li using namespace Eigen;
13*bf2c3715SXin Li
14*bf2c3715SXin Li #ifndef REPEAT
15*bf2c3715SXin Li #define REPEAT 40000000
16*bf2c3715SXin Li #endif
17*bf2c3715SXin Li
18*bf2c3715SXin Li #ifndef SCALAR
19*bf2c3715SXin Li #define SCALAR double
20*bf2c3715SXin Li #endif
21*bf2c3715SXin Li
main(int argc,char * argv[])22*bf2c3715SXin Li int main(int argc, char *argv[])
23*bf2c3715SXin Li {
24*bf2c3715SXin Li Matrix<SCALAR,MATSIZE,MATSIZE> I = Matrix<SCALAR,MATSIZE,MATSIZE>::Ones();
25*bf2c3715SXin Li Matrix<SCALAR,MATSIZE,MATSIZE> m;
26*bf2c3715SXin Li for(int i = 0; i < MATSIZE; i++)
27*bf2c3715SXin Li for(int j = 0; j < MATSIZE; j++)
28*bf2c3715SXin Li {
29*bf2c3715SXin Li m(i,j) = (i+MATSIZE*j);
30*bf2c3715SXin Li }
31*bf2c3715SXin Li asm("#begin");
32*bf2c3715SXin Li for(int a = 0; a < REPEAT; a++)
33*bf2c3715SXin Li {
34*bf2c3715SXin Li m = Matrix<SCALAR,MATSIZE,MATSIZE>::Ones() + 0.00005 * (m + (m*m));
35*bf2c3715SXin Li }
36*bf2c3715SXin Li asm("#end");
37*bf2c3715SXin Li cout << m << endl;
38*bf2c3715SXin Li return 0;
39*bf2c3715SXin Li }
40