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