mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Migrate Eigen benchmarks to the Google benchmark framework
libeigen/eigen!2132 Closes #3025 Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
43
benchmarks/benchGeometry.cpp
Normal file
43
benchmarks/benchGeometry.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
#include <Eigen/Core>
|
||||
#include <Eigen/Geometry>
|
||||
|
||||
using namespace Eigen;
|
||||
|
||||
template <typename Scalar, int Mode, int VSize>
|
||||
static void BM_TransformVec(benchmark::State& state) {
|
||||
typedef Transform<Scalar, 3, Mode> Trans;
|
||||
typedef Matrix<Scalar, VSize, 1> Vec;
|
||||
Trans t;
|
||||
t.setIdentity();
|
||||
Vec v;
|
||||
v.setRandom();
|
||||
for (auto _ : state) {
|
||||
v = t * v;
|
||||
benchmark::DoNotOptimize(v.data());
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Scalar, int Mode>
|
||||
static void BM_TransformTransform(benchmark::State& state) {
|
||||
typedef Transform<Scalar, 3, Mode> Trans;
|
||||
Trans t1, t2;
|
||||
t1.setIdentity();
|
||||
t2.setIdentity();
|
||||
for (auto _ : state) {
|
||||
t2 = Trans(t1 * t2);
|
||||
benchmark::DoNotOptimize(t2.data());
|
||||
}
|
||||
}
|
||||
|
||||
BENCHMARK(BM_TransformVec<float, Isometry, 3>);
|
||||
BENCHMARK(BM_TransformVec<float, Isometry, 4>);
|
||||
BENCHMARK(BM_TransformVec<float, Projective, 4>);
|
||||
BENCHMARK(BM_TransformVec<double, Isometry, 3>);
|
||||
BENCHMARK(BM_TransformVec<double, Isometry, 4>);
|
||||
BENCHMARK(BM_TransformVec<double, Projective, 4>);
|
||||
|
||||
BENCHMARK(BM_TransformTransform<float, Isometry>);
|
||||
BENCHMARK(BM_TransformTransform<float, Projective>);
|
||||
BENCHMARK(BM_TransformTransform<double, Isometry>);
|
||||
BENCHMARK(BM_TransformTransform<double, Projective>);
|
||||
Reference in New Issue
Block a user