From c92e78b3f21af3eceb71aabc8a0e8628e969c660 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Tue, 31 Mar 2020 09:53:46 +0200 Subject: [PATCH] Update the envelope benchmark --- benchmarks/BM_envelopes.cpp | 36 ++++++++++++++++++++++-------------- benchmarks/CMakeLists.txt | 6 +++--- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/benchmarks/BM_envelopes.cpp b/benchmarks/BM_envelopes.cpp index 67ec5dcf..3bff261e 100644 --- a/benchmarks/BM_envelopes.cpp +++ b/benchmarks/BM_envelopes.cpp @@ -10,7 +10,7 @@ #include #include #include -#include "EventEnvelopes.h" +#include "SfzHelpers.h" #include "absl/types/span.h" class EnvelopeFixture : public benchmark::Fixture { @@ -29,45 +29,53 @@ public: } std::random_device rd { }; std::mt19937 gen { rd() }; - std::uniform_real_distribution dist { 1, 30 }; + std::uniform_real_distribution dist { 2, 30 }; std::vector input; std::vector output; }; BENCHMARK_DEFINE_F(EnvelopeFixture, Linear)(benchmark::State& state) { - sfz::LinearEnvelope envelope; for (auto _ : state) { - envelope.registerEvent(static_cast(state.range(0) - 1), dist(gen)); - envelope.getBlock(absl::MakeSpan(output)); + sfz::EventVector events { + {0, 0.0f}, + {static_cast(state.range(0) - 1), dist(gen)} + }; + linearEnvelope(events, absl::MakeSpan(output), [](float x) { return x; }); } } BENCHMARK_DEFINE_F(EnvelopeFixture, LinearQuantized)(benchmark::State& state) { - sfz::LinearEnvelope envelope; for (auto _ : state) { - envelope.registerEvent(static_cast(state.range(0) - 1), dist(gen)); - envelope.getQuantizedBlock(absl::MakeSpan(output), 0.5); + sfz::EventVector events { + {0, 0.0f}, + {static_cast(state.range(0) - 1), dist(gen)} + }; + linearEnvelope(events, absl::MakeSpan(output), [](float x) { return x; }, 0.5); } } BENCHMARK_DEFINE_F(EnvelopeFixture, Multiplicative)(benchmark::State& state) { - sfz::MultiplicativeEnvelope envelope; for (auto _ : state) { - envelope.registerEvent(static_cast(state.range(0) - 1), dist(gen)); - envelope.getBlock(absl::MakeSpan(output)); + sfz::EventVector events { + {0, 1.0f}, + {static_cast(state.range(0) - 1), dist(gen)} + }; + multiplicativeEnvelope(events, absl::MakeSpan(output), [](float x) { return x; }); } } BENCHMARK_DEFINE_F(EnvelopeFixture, MultiplicativeQuantized)(benchmark::State& state) { - sfz::MultiplicativeEnvelope envelope; for (auto _ : state) { - envelope.registerEvent(static_cast(state.range(0) - 1), dist(gen)); - envelope.getQuantizedBlock(absl::MakeSpan(output), 1.5); + sfz::EventVector events { + {0, 1.0f}, + {static_cast(state.range(0) - 1), dist(gen)} + }; + multiplicativeEnvelope(events, absl::MakeSpan(output), [](float x) { return x; }, 2.0f); } } diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index fb666f0c..2a217244 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -69,11 +69,11 @@ sfizz_add_benchmark(bm_logger BM_logger.cpp) target_link_libraries(bm_logger PRIVATE sfizz::sfizz) if (TARGET sfizz-samplerate) - sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES}) - target_link_libraries(bm_resample PRIVATE sfizz-samplerate sfizz-sndfile) +sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES}) +target_link_libraries(bm_resample PRIVATE sfizz-samplerate sfizz-sndfile) endif() -sfizz_add_benchmark(bm_envelopes BM_envelopes.cpp ../src/sfizz/MidiState.cpp ../src/sfizz/FloatEnvelopes.cpp) +sfizz_add_benchmark(bm_envelopes BM_envelopes.cpp) sfizz_add_benchmark(bm_wavfile BM_wavfile.cpp) target_link_libraries(bm_wavfile PRIVATE sfizz-sndfile)