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