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