| // SPDX-FileCopyrightText: The Eigen Authors | |
| // SPDX-License-Identifier: MPL-2.0 | |
| #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); |