Update the benchmarks

This commit is contained in:
Paul Ferrand 2020-05-30 20:27:44 +02:00 committed by Jean Pierre Cimalando
parent f827e7c2e5
commit b74e376e16
3 changed files with 57 additions and 18 deletions

View file

@ -18,7 +18,8 @@ static void Scalar(benchmark::State& state) {
std::iota(input.begin(), input.end(), 1.0f);
for (auto _ : state) {
sfz::readInterleaved<float, false>(input, absl::MakeSpan(outputLeft), absl::MakeSpan(outputRight));
sfz::setSIMDOpStatus(sfz::SIMDOps::readInterleaved, false);
sfz::readInterleaved(input, absl::MakeSpan(outputLeft), absl::MakeSpan(outputRight));
}
}
@ -29,7 +30,8 @@ static void SSE(benchmark::State& state) {
std::iota(input.begin(), input.end(), 1.0f);
for (auto _ : state) {
sfz::readInterleaved<float, true>(input, absl::MakeSpan(outputLeft), absl::MakeSpan(outputRight));
sfz::setSIMDOpStatus(sfz::SIMDOps::readInterleaved, true);
sfz::readInterleaved(input, absl::MakeSpan(outputLeft), absl::MakeSpan(outputRight));
}
}
@ -39,7 +41,12 @@ static void Scalar_Unaligned(benchmark::State& state) {
sfz::Buffer<float> outputRight (state.range(0));
std::iota(input.begin(), input.end(), 1.0f);
for (auto _ : state) {
sfz::readInterleaved<float, false>(absl::MakeSpan(input).subspan(2), absl::MakeSpan(outputLeft), absl::MakeSpan(outputRight));
sfz::setSIMDOpStatus(sfz::SIMDOps::readInterleaved, false);
sfz::readInterleaved(
absl::MakeSpan(input).subspan(2),
absl::MakeSpan(outputLeft),
absl::MakeSpan(outputRight)
);
}
}
@ -49,7 +56,12 @@ static void SSE_Unaligned(benchmark::State& state) {
sfz::Buffer<float> outputRight (state.range(0));
std::iota(input.begin(), input.end(), 1.0f);
for (auto _ : state) {
sfz::readInterleaved<float, true>(absl::MakeSpan(input).subspan(2), absl::MakeSpan(outputLeft), absl::MakeSpan(outputRight));
sfz::setSIMDOpStatus(sfz::SIMDOps::readInterleaved, true);
sfz::readInterleaved(
absl::MakeSpan(input).subspan(2),
absl::MakeSpan(outputLeft),
absl::MakeSpan(outputRight)
);
}
}
@ -59,7 +71,12 @@ static void Scalar_Unaligned_2(benchmark::State& state) {
sfz::Buffer<float> outputRight (state.range(0));
std::iota(input.begin(), input.end(), 1.0f);
for (auto _ : state) {
sfz::readInterleaved<float, false>(absl::MakeSpan(input).subspan(2), absl::MakeSpan(outputLeft).subspan(1), absl::MakeSpan(outputRight).subspan(3));
sfz::setSIMDOpStatus(sfz::SIMDOps::readInterleaved, false);
sfz::readInterleaved(
absl::MakeSpan(input).subspan(2),
absl::MakeSpan(outputLeft).subspan(1),
absl::MakeSpan(outputRight).subspan(3)
);
}
}
@ -69,7 +86,12 @@ static void SSE_Unaligned_2(benchmark::State& state) {
sfz::Buffer<float> outputRight (state.range(0));
std::iota(input.begin(), input.end(), 1.0f);
for (auto _ : state) {
sfz::readInterleaved<float, true>(absl::MakeSpan(input).subspan(2), absl::MakeSpan(outputLeft).subspan(1), absl::MakeSpan(outputRight).subspan(3));
sfz::setSIMDOpStatus(sfz::SIMDOps::readInterleaved, true);
sfz::readInterleaved(
absl::MakeSpan(input).subspan(2),
absl::MakeSpan(outputLeft).subspan(1),
absl::MakeSpan(outputRight).subspan(3)
);
}
}

View file

@ -19,7 +19,8 @@ static void Interleaved_Write(benchmark::State& state) {
std::iota(inputRight.begin(), inputRight.end(), 1.0f);
for (auto _ : state) {
sfz::writeInterleaved<float, false>(inputLeft, inputRight, absl::MakeSpan(output));
sfz::setSIMDOpStatus(sfz::SIMDOps::writeInterleaved, false);
sfz::writeInterleaved(inputLeft, inputRight, absl::MakeSpan(output));
}
}
@ -30,8 +31,8 @@ static void Interleaved_Write_SSE(benchmark::State& state) {
std::iota(inputLeft.begin(), inputLeft.end(), 1.0f);
std::iota(inputRight.begin(), inputRight.end(), 1.0f);
for (auto _ : state) {
sfz::writeInterleaved<float, true>(inputLeft, inputRight, absl::MakeSpan(output));
benchmark::DoNotOptimize(output);
sfz::setSIMDOpStatus(sfz::SIMDOps::writeInterleaved, true);
sfz::writeInterleaved(inputLeft, inputRight, absl::MakeSpan(output));
}
}
@ -42,8 +43,12 @@ static void Unaligned_Interleaved_Write(benchmark::State& state) {
std::iota(inputLeft.begin(), inputLeft.end(), 1.0f);
std::iota(inputRight.begin(), inputRight.end(), 1.0f);
for (auto _ : state) {
sfz::writeInterleaved<float, false>(absl::MakeSpan(inputLeft).subspan(1) , absl::MakeSpan(inputRight).subspan(1), absl::MakeSpan(output).subspan(2));
benchmark::DoNotOptimize(output);
sfz::setSIMDOpStatus(sfz::SIMDOps::writeInterleaved, false);
sfz::writeInterleaved(
absl::MakeSpan(inputLeft).subspan(1),
absl::MakeSpan(inputRight).subspan(1),
absl::MakeSpan(output).subspan(2)
);
}
}
@ -54,8 +59,12 @@ static void Unaligned_Interleaved_Write_SSE(benchmark::State& state) {
std::iota(inputLeft.begin(), inputLeft.end(), 1.0f);
std::iota(inputRight.begin(), inputRight.end(), 1.0f);
for (auto _ : state) {
sfz::writeInterleaved<float, true>(absl::MakeSpan(inputLeft).subspan(1) , absl::MakeSpan(inputRight).subspan(1), absl::MakeSpan(output).subspan(2));
benchmark::DoNotOptimize(output);
sfz::setSIMDOpStatus(sfz::SIMDOps::writeInterleaved, true);
sfz::writeInterleaved(
absl::MakeSpan(inputLeft).subspan(1),
absl::MakeSpan(inputRight).subspan(1),
absl::MakeSpan(output).subspan(2)
);
}
}
@ -66,8 +75,12 @@ static void Unaligned_Interleaved_Write_2(benchmark::State& state) {
std::iota(inputLeft.begin(), inputLeft.end(), 1.0f);
std::iota(inputRight.begin(), inputRight.end(), 1.0f);
for (auto _ : state) {
sfz::writeInterleaved<float, false>(absl::MakeSpan(inputLeft) , absl::MakeSpan(inputRight).subspan(1), absl::MakeSpan(output).subspan(2));
benchmark::DoNotOptimize(output);
sfz::setSIMDOpStatus(sfz::SIMDOps::writeInterleaved, false);
sfz::writeInterleaved(
absl::MakeSpan(inputLeft),
absl::MakeSpan(inputRight).subspan(1),
absl::MakeSpan(output).subspan(2)
);
}
}
@ -78,8 +91,12 @@ static void Unaligned_Interleaved_Write_SSE_2(benchmark::State& state) {
std::iota(inputLeft.begin(), inputLeft.end(), 1.0f);
std::iota(inputRight.begin(), inputRight.end(), 1.0f);
for (auto _ : state) {
sfz::writeInterleaved<float, true>(absl::MakeSpan(inputLeft) , absl::MakeSpan(inputRight).subspan(1), absl::MakeSpan(output).subspan(2));
benchmark::DoNotOptimize(output);
sfz::setSIMDOpStatus(sfz::SIMDOps::writeInterleaved, true);
sfz::writeInterleaved(
absl::MakeSpan(inputLeft),
absl::MakeSpan(inputRight).subspan(1),
absl::MakeSpan(output).subspan(2)
);
}
}

View file

@ -18,7 +18,7 @@ if(SAMPLERATE_LIBRARY AND SAMPLERATE_INCLUDE_DIR)
endif()
add_library(bm_simd STATIC ${BENCHMARK_SIMD_SOURCES})
target_link_libraries(bm_simd PRIVATE absl::span)
target_link_libraries(bm_simd PRIVATE absl::span sfizz-cpuid)
target_include_directories(bm_simd PRIVATE ../src/external)
add_library(bm_ftz STATIC ../src/sfizz/ScopedFTZ.cpp)