1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// g++ -O3 -DNDEBUG benchmarkX.cpp -o benchmarkX && time ./benchmarkX 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <iostream> 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <Eigen/Core> 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace std; 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace Eigen; 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef REPEAT 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define REPEAT 10000 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef SCALAR 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define SCALAR float 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathint main(int argc, char *argv[]) 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath typedef Matrix<SCALAR, Eigen::Dynamic, Eigen::Dynamic> Mat; 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Mat m(100, 100); 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath m.setRandom(); 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath for(int a = 0; a < REPEAT; a++) 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath { 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath int r, c, nr, nc; 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath r = Eigen::internal::random<int>(0,10); 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath c = Eigen::internal::random<int>(0,10); 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath nr = Eigen::internal::random<int>(50,80); 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath nc = Eigen::internal::random<int>(50,80); 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath m.block(r,c,nr,nc) += Mat::Ones(nr,nc); 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath m.block(r,c,nr,nc) *= SCALAR(10); 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath m.block(r,c,nr,nc) -= Mat::constant(nr,nc,10); 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath m.block(r,c,nr,nc) /= SCALAR(10); 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath } 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath cout << m[0] << endl; 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath return 0; 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 39