diff options
Diffstat (limited to 'src/trace_processor/db/bit_vector_benchmark.cc')
-rw-r--r-- | src/trace_processor/db/bit_vector_benchmark.cc | 247 |
1 files changed, 0 insertions, 247 deletions
diff --git a/src/trace_processor/db/bit_vector_benchmark.cc b/src/trace_processor/db/bit_vector_benchmark.cc deleted file mode 100644 index 6c896d17e..000000000 --- a/src/trace_processor/db/bit_vector_benchmark.cc +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (C) 2019 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include <random> - -#include <benchmark/benchmark.h> - -#include "src/trace_processor/db/bit_vector.h" - -namespace { - -using perfetto::trace_processor::BitVector; - -} - -static void BM_BitVectorAppendTrue(benchmark::State& state) { - BitVector bv; - for (auto _ : state) { - bv.AppendTrue(); - benchmark::ClobberMemory(); - } -} -BENCHMARK(BM_BitVectorAppendTrue); - -static void BM_BitVectorAppendFalse(benchmark::State& state) { - BitVector bv; - for (auto _ : state) { - bv.AppendFalse(); - benchmark::ClobberMemory(); - } -} -BENCHMARK(BM_BitVectorAppendFalse); - -static void BM_BitVectorSet(benchmark::State& state) { - static constexpr uint32_t kRandomSeed = 42; - std::minstd_rand0 rnd_engine(kRandomSeed); - - uint32_t size = static_cast<uint32_t>(state.range(0)); - - BitVector bv; - for (uint32_t i = 0; i < size; ++i) { - if (rnd_engine() % 2) { - bv.AppendTrue(); - } else { - bv.AppendFalse(); - } - } - - static constexpr uint32_t kPoolSize = 1024 * 1024; - std::vector<bool> bit_pool(kPoolSize); - std::vector<uint32_t> row_pool(kPoolSize); - for (uint32_t i = 0; i < kPoolSize; ++i) { - bit_pool[i] = rnd_engine() % 2; - row_pool[i] = rnd_engine() % size; - } - - uint32_t pool_idx = 0; - for (auto _ : state) { - bv.Set(row_pool[pool_idx]); - pool_idx = (pool_idx + 1) % kPoolSize; - benchmark::ClobberMemory(); - } -} -BENCHMARK(BM_BitVectorSet) - ->Arg(64) - ->Arg(512) - ->Arg(8192) - ->Arg(123456) - ->Arg(1234567); - -static void BM_BitVectorClear(benchmark::State& state) { - static constexpr uint32_t kRandomSeed = 42; - std::minstd_rand0 rnd_engine(kRandomSeed); - - uint32_t size = static_cast<uint32_t>(state.range(0)); - - BitVector bv; - for (uint32_t i = 0; i < size; ++i) { - if (rnd_engine() % 2) { - bv.AppendTrue(); - } else { - bv.AppendFalse(); - } - } - - static constexpr uint32_t kPoolSize = 1024 * 1024; - std::vector<uint32_t> row_pool(kPoolSize); - for (uint32_t i = 0; i < kPoolSize; ++i) { - row_pool[i] = rnd_engine() % size; - } - - uint32_t pool_idx = 0; - for (auto _ : state) { - bv.Clear(row_pool[pool_idx]); - pool_idx = (pool_idx + 1) % kPoolSize; - benchmark::ClobberMemory(); - } -} -BENCHMARK(BM_BitVectorClear) - ->Arg(64) - ->Arg(512) - ->Arg(8192) - ->Arg(123456) - ->Arg(1234567); - -static void BM_BitVectorIndexOfNthSet(benchmark::State& state) { - static constexpr uint32_t kRandomSeed = 42; - std::minstd_rand0 rnd_engine(kRandomSeed); - - uint32_t size = static_cast<uint32_t>(state.range(0)); - - BitVector bv; - for (uint32_t i = 0; i < size; ++i) { - if (rnd_engine() % 2) { - bv.AppendTrue(); - } else { - bv.AppendFalse(); - } - } - - static constexpr uint32_t kPoolSize = 1024 * 1024; - std::vector<uint32_t> row_pool(kPoolSize); - uint32_t set_bit_count = bv.GetNumBitsSet(); - for (uint32_t i = 0; i < kPoolSize; ++i) { - row_pool[i] = rnd_engine() % set_bit_count; - } - - uint32_t pool_idx = 0; - for (auto _ : state) { - benchmark::DoNotOptimize(bv.IndexOfNthSet(row_pool[pool_idx])); - pool_idx = (pool_idx + 1) % kPoolSize; - } -} -BENCHMARK(BM_BitVectorIndexOfNthSet) - ->Arg(64) - ->Arg(512) - ->Arg(8192) - ->Arg(123456) - ->Arg(1234567); - -static void BM_BitVectorGetNumBitsSet(benchmark::State& state) { - static constexpr uint32_t kRandomSeed = 42; - std::minstd_rand0 rnd_engine(kRandomSeed); - - uint32_t size = static_cast<uint32_t>(state.range(0)); - - uint32_t count = 0; - BitVector bv; - for (uint32_t i = 0; i < size; ++i) { - bool value = rnd_engine() % 2; - if (value) { - bv.AppendTrue(); - } else { - bv.AppendFalse(); - } - - if (value) - count++; - } - - uint32_t res = count; - for (auto _ : state) { - benchmark::DoNotOptimize(res &= bv.GetNumBitsSet()); - } - PERFETTO_CHECK(res == count); -} -BENCHMARK(BM_BitVectorGetNumBitsSet) - ->Arg(64) - ->Arg(512) - ->Arg(8192) - ->Arg(123456) - ->Arg(1234567); - -static void BM_BitVectorResize(benchmark::State& state) { - static constexpr uint32_t kRandomSeed = 42; - std::minstd_rand0 rnd_engine(kRandomSeed); - - static constexpr uint32_t kPoolSize = 1024 * 1024; - static constexpr uint32_t kMaxSize = 1234567; - - std::vector<bool> resize_fill_pool(kPoolSize); - std::vector<uint32_t> resize_count_pool(kPoolSize); - for (uint32_t i = 0; i < kPoolSize; ++i) { - resize_fill_pool[i] = rnd_engine() % 2; - resize_count_pool[i] = rnd_engine() % kMaxSize; - } - - uint32_t pool_idx = 0; - BitVector bv; - for (auto _ : state) { - bv.Resize(resize_count_pool[pool_idx], resize_fill_pool[pool_idx]); - pool_idx = (pool_idx + 1) % kPoolSize; - benchmark::ClobberMemory(); - } -} -BENCHMARK(BM_BitVectorResize); - -static void BM_BitVectorUpdateSetBits(benchmark::State& state) { - static constexpr uint32_t kRandomSeed = 42; - std::minstd_rand0 rnd_engine(kRandomSeed); - - uint32_t size = static_cast<uint32_t>(state.range(0)); - - BitVector bv; - BitVector picker; - for (uint32_t i = 0; i < size; ++i) { - bool value = rnd_engine() % 2; - if (value) { - bv.AppendTrue(); - - bool picker_value = rnd_engine() % 2; - if (picker_value) { - picker.AppendTrue(); - } else { - picker.AppendFalse(); - } - } else { - bv.AppendFalse(); - } - } - - for (auto _ : state) { - state.PauseTiming(); - BitVector copy = bv.Copy(); - state.ResumeTiming(); - - copy.UpdateSetBits(picker); - benchmark::ClobberMemory(); - } -} -BENCHMARK(BM_BitVectorUpdateSetBits) - ->Arg(64) - ->Arg(512) - ->Arg(8192) - ->Arg(123456) - ->Arg(1234567); |