Added a couple benchmarks

Clocks are about 20 ns
The queue is about 2 us
This commit is contained in:
Paul Fd 2020-02-17 09:22:46 +01:00
parent cb88fb4bb7
commit 1461680e20
3 changed files with 105 additions and 0 deletions

51
benchmarks/BM_clock.cpp Normal file
View file

@ -0,0 +1,51 @@
// SPDX-License-Identifier: BSD-2-Clause
// This code is part of the sfizz library and is licensed under a BSD 2-clause
// license. You should have receive a LICENSE.md file along with the code.
// If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz
#include <benchmark/benchmark.h>
#include <chrono>
class Clock : public benchmark::Fixture {
public:
void SetUp(const ::benchmark::State& state) {
}
void TearDown(const ::benchmark::State& state [[maybe_unused]]) {
}
std::chrono::time_point<std::chrono::high_resolution_clock> hires;
std::chrono::time_point<std::chrono::steady_clock> steady;
};
BENCHMARK_DEFINE_F(Clock, HighRes)(benchmark::State& state) {
for (auto _ : state)
{
hires = std::chrono::high_resolution_clock::now();
}
}
BENCHMARK_DEFINE_F(Clock, Steady)(benchmark::State& state) {
for (auto _ : state)
{
steady = std::chrono::steady_clock::now();
}
}
// Just checking that stuff happens..
BENCHMARK_DEFINE_F(Clock, Both)(benchmark::State& state) {
for (auto _ : state)
{
hires = std::chrono::high_resolution_clock::now();
steady = std::chrono::steady_clock::now();
}
}
BENCHMARK_REGISTER_F(Clock, HighRes);
BENCHMARK_REGISTER_F(Clock, Steady);
BENCHMARK_REGISTER_F(Clock, Both);
BENCHMARK_MAIN();

48
benchmarks/BM_logger.cpp Normal file
View file

@ -0,0 +1,48 @@
// SPDX-License-Identifier: BSD-2-Clause
// This code is part of the sfizz library and is licensed under a BSD 2-clause
// license. You should have receive a LICENSE.md file along with the code.
// If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz
#include <benchmark/benchmark.h>
#include "Logger.h"
#include <chrono>
class Logger : public benchmark::Fixture {
public:
void SetUp(const ::benchmark::State& state) {
}
void TearDown(const ::benchmark::State& state [[maybe_unused]]) {
}
};
BENCHMARK_DEFINE_F(Logger, Baseline)(benchmark::State& state) {
for (auto _ : state)
{
sfz::Logger logger {};
benchmark::DoNotOptimize(logger);
}
}
BENCHMARK_DEFINE_F(Logger, ProcessingTime)(benchmark::State& state) {
for (auto _ : state)
{
sfz::Logger logger {};
sfz::CallbackBreakdown breakdown;
breakdown.data = sfz::Duration(1);
breakdown.renderMethod = sfz::Duration(1);
breakdown.dispatch = sfz::Duration(1);
breakdown.panning = sfz::Duration(1);
breakdown.filters = sfz::Duration(1);
breakdown.amplitude = sfz::Duration(1);
logger.logCallbackTime(std::move(breakdown), 16, 16);
}
}
BENCHMARK_REGISTER_F(Logger, Baseline);
BENCHMARK_REGISTER_F(Logger, ProcessingTime);
BENCHMARK_MAIN();

View file

@ -32,6 +32,7 @@ macro(sfizz_add_benchmark TARGET)
endmacro()
sfizz_add_benchmark(bm_opf_high_vs_low BM_OPF_high_vs_low.cpp)
sfizz_add_benchmark(bm_clock BM_clock.cpp)
sfizz_add_benchmark(bm_write BM_writeInterleaved.cpp)
sfizz_add_benchmark(bm_read BM_readInterleaved.cpp)
sfizz_add_benchmark(bm_fill BM_fill.cpp)
@ -57,6 +58,9 @@ sfizz_add_benchmark(bm_widthPos BM_widthPos.cpp)
sfizz_add_benchmark(bm_interpolationCast BM_interpolationCast.cpp)
sfizz_add_benchmark(bm_pointerIterationOrOffsets BM_pointerIterationOrOffsets.cpp)
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)
@ -86,6 +90,7 @@ add_custom_target(sfizz_benchmarks)
add_dependencies(sfizz_benchmarks
bm_opf_high_vs_low
bm_write
bm_clock
bm_pointerIterationOrOffsets
bm_read
bm_mean
@ -102,6 +107,7 @@ add_dependencies(sfizz_benchmarks
bm_ramp
bm_ADSR
bm_add
bm_logger
bm_pan
bm_subtract
bm_multiplyAdd