Reorganize benchmarks into subdirectories and clean up Eigen sources

libeigen/eigen!2176

Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
Rasmus Munk Larsen
2026-02-21 17:46:55 -08:00
parent 832b940976
commit d4077a6e99
34 changed files with 49 additions and 37 deletions

View File

@@ -0,0 +1,41 @@
#include <benchmark/benchmark.h>
#include <Eigen/Core>
#include "../../test/MovableScalar.h"
#include <utility>
template <typename MatrixType>
void copy_matrix(MatrixType& m) {
MatrixType tmp(m);
m = tmp;
}
template <typename MatrixType>
void move_matrix(MatrixType&& m) {
MatrixType tmp(std::move(m));
m = std::move(tmp);
}
template <typename Scalar>
static void BM_CopySemantics(benchmark::State& state) {
using MatrixType = Eigen::Matrix<Eigen::MovableScalar<Scalar>, 1, 10>;
MatrixType data = MatrixType::Random().eval();
for (auto _ : state) {
copy_matrix(data);
benchmark::DoNotOptimize(data.data());
}
}
template <typename Scalar>
static void BM_MoveSemantics(benchmark::State& state) {
using MatrixType = Eigen::Matrix<Eigen::MovableScalar<Scalar>, 1, 10>;
MatrixType data = MatrixType::Random().eval();
for (auto _ : state) {
move_matrix(std::move(data));
benchmark::DoNotOptimize(data.data());
}
}
BENCHMARK(BM_CopySemantics<float>);
BENCHMARK(BM_MoveSemantics<float>);
BENCHMARK(BM_CopySemantics<double>);
BENCHMARK(BM_MoveSemantics<double>);