#include #include #include "../../test/MovableScalar.h" #include template void copy_matrix(MatrixType& m) { MatrixType tmp(m); m = tmp; } template void move_matrix(MatrixType&& m) { MatrixType tmp(std::move(m)); m = std::move(tmp); } template static void BM_CopySemantics(benchmark::State& state) { using MatrixType = Eigen::Matrix, 1, 10>; MatrixType data = MatrixType::Random().eval(); for (auto _ : state) { copy_matrix(data); benchmark::DoNotOptimize(data.data()); } } template static void BM_MoveSemantics(benchmark::State& state) { using MatrixType = Eigen::Matrix, 1, 10>; MatrixType data = MatrixType::Random().eval(); for (auto _ : state) { move_matrix(std::move(data)); benchmark::DoNotOptimize(data.data()); } } BENCHMARK(BM_CopySemantics); BENCHMARK(BM_MoveSemantics); BENCHMARK(BM_CopySemantics); BENCHMARK(BM_MoveSemantics);