Update the envelope benchmark

This commit is contained in:
Paul Fd 2020-03-31 09:53:46 +02:00
parent 767ef7ba38
commit c92e78b3f2
2 changed files with 25 additions and 17 deletions

View file

@ -10,7 +10,7 @@
#include <vector> #include <vector>
#include <cmath> #include <cmath>
#include <iostream> #include <iostream>
#include "EventEnvelopes.h" #include "SfzHelpers.h"
#include "absl/types/span.h" #include "absl/types/span.h"
class EnvelopeFixture : public benchmark::Fixture { class EnvelopeFixture : public benchmark::Fixture {
@ -29,45 +29,53 @@ public:
} }
std::random_device rd { }; std::random_device rd { };
std::mt19937 gen { rd() }; std::mt19937 gen { rd() };
std::uniform_real_distribution<float> dist { 1, 30 }; std::uniform_real_distribution<float> dist { 2, 30 };
std::vector<float> input; std::vector<float> input;
std::vector<float> output; std::vector<float> output;
}; };
BENCHMARK_DEFINE_F(EnvelopeFixture, Linear)(benchmark::State& state) { BENCHMARK_DEFINE_F(EnvelopeFixture, Linear)(benchmark::State& state) {
sfz::LinearEnvelope<float> envelope;
for (auto _ : state) for (auto _ : state)
{ {
envelope.registerEvent(static_cast<int>(state.range(0) - 1), dist(gen)); sfz::EventVector events {
envelope.getBlock(absl::MakeSpan(output)); {0, 0.0f},
{static_cast<int>(state.range(0) - 1), dist(gen)}
};
linearEnvelope(events, absl::MakeSpan(output), [](float x) { return x; });
} }
} }
BENCHMARK_DEFINE_F(EnvelopeFixture, LinearQuantized)(benchmark::State& state) { BENCHMARK_DEFINE_F(EnvelopeFixture, LinearQuantized)(benchmark::State& state) {
sfz::LinearEnvelope<float> envelope;
for (auto _ : state) for (auto _ : state)
{ {
envelope.registerEvent(static_cast<int>(state.range(0) - 1), dist(gen)); sfz::EventVector events {
envelope.getQuantizedBlock(absl::MakeSpan(output), 0.5); {0, 0.0f},
{static_cast<int>(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) { BENCHMARK_DEFINE_F(EnvelopeFixture, Multiplicative)(benchmark::State& state) {
sfz::MultiplicativeEnvelope<float> envelope;
for (auto _ : state) for (auto _ : state)
{ {
envelope.registerEvent(static_cast<int>(state.range(0) - 1), dist(gen)); sfz::EventVector events {
envelope.getBlock(absl::MakeSpan(output)); {0, 1.0f},
{static_cast<int>(state.range(0) - 1), dist(gen)}
};
multiplicativeEnvelope(events, absl::MakeSpan(output), [](float x) { return x; });
} }
} }
BENCHMARK_DEFINE_F(EnvelopeFixture, MultiplicativeQuantized)(benchmark::State& state) { BENCHMARK_DEFINE_F(EnvelopeFixture, MultiplicativeQuantized)(benchmark::State& state) {
sfz::MultiplicativeEnvelope<float> envelope;
for (auto _ : state) for (auto _ : state)
{ {
envelope.registerEvent(static_cast<int>(state.range(0) - 1), dist(gen)); sfz::EventVector events {
envelope.getQuantizedBlock(absl::MakeSpan(output), 1.5); {0, 1.0f},
{static_cast<int>(state.range(0) - 1), dist(gen)}
};
multiplicativeEnvelope(events, absl::MakeSpan(output), [](float x) { return x; }, 2.0f);
} }
} }

View file

@ -69,11 +69,11 @@ sfizz_add_benchmark(bm_logger BM_logger.cpp)
target_link_libraries(bm_logger PRIVATE sfizz::sfizz) target_link_libraries(bm_logger PRIVATE sfizz::sfizz)
if (TARGET sfizz-samplerate) if (TARGET sfizz-samplerate)
sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES}) sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES})
target_link_libraries(bm_resample PRIVATE sfizz-samplerate sfizz-sndfile) target_link_libraries(bm_resample PRIVATE sfizz-samplerate sfizz-sndfile)
endif() 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) sfizz_add_benchmark(bm_wavfile BM_wavfile.cpp)
target_link_libraries(bm_wavfile PRIVATE sfizz-sndfile) target_link_libraries(bm_wavfile PRIVATE sfizz-sndfile)