|
-
- #include <benchmark/benchmark.h>
-
- #include "dsp/buffer.hpp"
-
- using namespace bogaudio::dsp;
-
- struct BMOverlappingBuffer : OverlappingBuffer<float> {
- BMOverlappingBuffer(int size, int o) : OverlappingBuffer(size, o) {}
- virtual void process(float* samples) override {}
- };
-
- static void BM_OverlappingBuffer(benchmark::State& state) {
- BMOverlappingBuffer b(1024, 2);
- int i = 0;
- for (auto _ : state) {
- b.step(i++);
- }
- }
- BENCHMARK(BM_OverlappingBuffer);
-
-
- static void _averagingBuffer(benchmark::State& state, int n, int m) {
- AveragingBuffer<float> b(n, m);
- for (int i = 0; i < m; ++i) {
- float* frame = b.getInputFrame();
- std::fill_n(frame, n, M_PI);
- b.commitInputFrame();
- }
- float pi = 0.0;
- for (auto _ : state) {
- b.getInputFrame();
- b.commitInputFrame();
- pi = b.getAverages()[0];
- }
- const float e = 0.00001;
- assert(pi > M_PI - e && pi < M_PI + e);
- }
-
- static void BM_AveragingBufferSmallN(benchmark::State& state) {
- _averagingBuffer(state, 1024, 3);
- }
- BENCHMARK(BM_AveragingBufferSmallN);
-
- static void BM_AveragingBufferLargeN(benchmark::State& state) {
- _averagingBuffer(state, 1024, 100);
- }
- BENCHMARK(BM_AveragingBufferLargeN);
|