xref: /aosp_15_r20/external/eigen/bench/benchmark.cpp (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
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