#include #include #include using namespace Eigen; template static void BM_TransformVec(benchmark::State& state) { typedef Transform Trans; typedef Matrix Vec; Trans t; t.setIdentity(); Vec v; v.setRandom(); for (auto _ : state) { v = t * v; benchmark::DoNotOptimize(v.data()); } } template static void BM_TransformTransform(benchmark::State& state) { typedef Transform Trans; Trans t1, t2; t1.setIdentity(); t2.setIdentity(); for (auto _ : state) { t2 = Trans(t1 * t2); benchmark::DoNotOptimize(t2.data()); } } BENCHMARK(BM_TransformVec); BENCHMARK(BM_TransformVec); BENCHMARK(BM_TransformVec); BENCHMARK(BM_TransformVec); BENCHMARK(BM_TransformVec); BENCHMARK(BM_TransformVec); BENCHMARK(BM_TransformTransform); BENCHMARK(BM_TransformTransform); BENCHMARK(BM_TransformTransform); BENCHMARK(BM_TransformTransform);