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:
Rasmus Munk Larsen
2026-02-17 20:51:36 -08:00
parent 740cac97b4
commit 3108f6360e
23 changed files with 1632 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
#include <benchmark/benchmark.h>
#include <Eigen/Core>
using namespace Eigen;
static void BM_VecAdd(benchmark::State& state) {
int size = state.range(0);
VectorXf a = VectorXf::Random(size);
VectorXf b = VectorXf::Random(size);
for (auto _ : state) {
a = a + b;
benchmark::DoNotOptimize(a.data());
}
state.SetBytesProcessed(state.iterations() * size * sizeof(float) * 3);
}
BENCHMARK(BM_VecAdd)->RangeMultiplier(4)->Range(64, 1 << 20);
static void BM_MatAdd(benchmark::State& state) {
int n = state.range(0);
MatrixXf a = MatrixXf::Random(n, n);
MatrixXf b = MatrixXf::Random(n, n);
for (auto _ : state) {
a = a + b;
benchmark::DoNotOptimize(a.data());
}
state.SetBytesProcessed(state.iterations() * n * n * sizeof(float) * 3);
}
BENCHMARK(BM_MatAdd)->RangeMultiplier(2)->Range(8, 512);