Add the windowed-sinc benchmark
This commit is contained in:
parent
d5bb51488d
commit
0629a6b30d
1 changed files with 28 additions and 29 deletions
|
|
@ -13,6 +13,11 @@
|
||||||
|
|
||||||
class Interpolators : public benchmark::Fixture {
|
class Interpolators : public benchmark::Fixture {
|
||||||
public:
|
public:
|
||||||
|
Interpolators()
|
||||||
|
{
|
||||||
|
sfz::initializeInterpolators();
|
||||||
|
}
|
||||||
|
|
||||||
void SetUp(const ::benchmark::State& state)
|
void SetUp(const ::benchmark::State& state)
|
||||||
{
|
{
|
||||||
std::random_device rd { };
|
std::random_device rd { };
|
||||||
|
|
@ -55,33 +60,27 @@ static void doInterpolation(absl::Span<const float> input, absl::Span<float> out
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BENCHMARK_DEFINE_F(Interpolators, Linear)(benchmark::State& state)
|
#define ADD_INTERPOLATOR_BENCHMARK(Type) \
|
||||||
{
|
BENCHMARK_DEFINE_F(Interpolators, Type)(benchmark::State& state) \
|
||||||
ScopedFTZ ftz;
|
{ \
|
||||||
|
ScopedFTZ ftz; \
|
||||||
|
for (auto _ : state) { \
|
||||||
|
absl::Span<float> span = absl::MakeSpan(output); \
|
||||||
|
doInterpolation<sfz::kInterpolator##Type>(input, span); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
BENCHMARK_REGISTER_F(Interpolators, Type) \
|
||||||
|
->RangeMultiplier(4)->Range(1 << 4, 1 << 12);
|
||||||
|
|
||||||
for (auto _ : state) {
|
ADD_INTERPOLATOR_BENCHMARK(Nearest)
|
||||||
doInterpolation<sfz::kInterpolatorLinear>(input, absl::MakeSpan(output));
|
ADD_INTERPOLATOR_BENCHMARK(Linear)
|
||||||
}
|
ADD_INTERPOLATOR_BENCHMARK(Hermite3)
|
||||||
}
|
ADD_INTERPOLATOR_BENCHMARK(Bspline3)
|
||||||
|
ADD_INTERPOLATOR_BENCHMARK(Sinc8)
|
||||||
BENCHMARK_DEFINE_F(Interpolators, Hermite3)(benchmark::State& state)
|
ADD_INTERPOLATOR_BENCHMARK(Sinc12)
|
||||||
{
|
ADD_INTERPOLATOR_BENCHMARK(Sinc16)
|
||||||
ScopedFTZ ftz;
|
ADD_INTERPOLATOR_BENCHMARK(Sinc24)
|
||||||
|
ADD_INTERPOLATOR_BENCHMARK(Sinc36)
|
||||||
for (auto _ : state) {
|
ADD_INTERPOLATOR_BENCHMARK(Sinc48)
|
||||||
doInterpolation<sfz::kInterpolatorHermite3>(input, absl::MakeSpan(output));
|
ADD_INTERPOLATOR_BENCHMARK(Sinc60)
|
||||||
}
|
ADD_INTERPOLATOR_BENCHMARK(Sinc72)
|
||||||
}
|
|
||||||
|
|
||||||
BENCHMARK_DEFINE_F(Interpolators, Bspline3)(benchmark::State& state)
|
|
||||||
{
|
|
||||||
ScopedFTZ ftz;
|
|
||||||
|
|
||||||
for (auto _ : state) {
|
|
||||||
doInterpolation<sfz::kInterpolatorBspline3>(input, absl::MakeSpan(output));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BENCHMARK_REGISTER_F(Interpolators, Linear)->RangeMultiplier(4)->Range(1 << 4, 1 << 12);
|
|
||||||
BENCHMARK_REGISTER_F(Interpolators, Hermite3)->RangeMultiplier(4)->Range(1 << 4, 1 << 12);
|
|
||||||
BENCHMARK_REGISTER_F(Interpolators, Bspline3)->RangeMultiplier(4)->Range(1 << 4, 1 << 12);
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue